两个n不一样,迷茫
#include<iostream>
using namespace std;
void strcpy(char a[], char b[]);
int main()
{
char b[]="3349kj"; char a[50];
int n;
n=sizeof(b)/sizeof(char);
cout<<n<<endl;
strcpy(a,b);
return 0;
}
void strcpy(char a[], char b[])
{
int n;
n=sizeof(b)/sizeof(char);
cout<<n<<endl;
for(int i=0;i<n;i++)
a[i]=b[i];
for(i=0;i<n;i++)
cout<<a[i];
cout<<endl;
}
函数main和函数strcpy中的n值竟然不一样,很奇怪,哪位高手指点下
[解决办法]
strcpy中的sizeof(b) b被当作指针了,所以长度是4
[解决办法]
当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针
[解决办法]
char b[]相当一个指针,sizeof(b)相当取一个地址的大小,你的系统默认地址长度为4,所以输出为4
[解决办法]
接一楼补充:
strcpy中的sizeof(b) b被当作指针了,指向的是main()中b的char数组指针。
明白吗?
[解决办法]
数组如果做为函数的参数的话
会被弱化为一个指针的
而sizeof(指针)结果可想而知
[解决办法]
一样的答案不要说这么多遍嘛!
我就不多说,lz看着给点分吧,哈哈...
[解决办法]
楼上的都说了,楼主顺便给点分吧!谢了!
[解决办法]
顶
[解决办法]
数组如果做为函数的参数的话
会退化为一个指针