其实这个问题 不是2,3楼那样说的。
楼主 若在main函数中
定义字符数组后面添加代码 cout<<sizeof(a)<<endl;
即
#include <iostream>
using namespace std;
void Foo ( char str[100]);
int main()
{
char a[100]="dfkdshkfihjf";
cout<<sizeof(a)<<endl;//此处为添加代码处
Foo(a);
return 0;
}
void Foo ( char str[100])
{
cout<<sizeof(str)<<endl;
}
运行结果将会是 100
4
为什么了
这里我们得了解 sizeof()
1。若对指针进行操作,则将会返回存放指针所需的内存空间
2. 若对数组进行操作,则会返回整个数组在内存中的存储长度
而 sizeof(a)实质是对数组进行操作,char的所需的内存空间为1 这里定义的数组大小为100.所以返回的是100;
但是若想返回4 其实这里可以进行显示类型转换 sizeof((char*)a);
而为什么函数里面返回的是4 呢,那是因为 指定数组形参其实有三种方法,
1.void Foo ( char str[100]);
2.void Foo ( char str[]) ;
3.void Foo ( char *str);
而三种定义方法都是等价的,且形参类型都是 int*
所以在这里 进行sizeof(a)其实是对指针进行操作。所以返回的是4;