永发信息网

void Func ( char str[100] ) {  sizeof( str ) = 4 } 为什么是等于4,如果没有函数直接char str[100];

答案:4  悬赏:20  手机版
解决时间 2021-11-14 14:16
  • 提问者网友:战皆罪
  • 2021-11-14 04:51
void Func ( char str[100] ) {  sizeof( str ) = 4 } 为什么是等于4,如果没有函数直接char str[100];
最佳答案
  • 五星知识达人网友:狂恋
  • 2021-11-14 06:10
在C/C++里数组作为参数时传递的实际上是指向数组第一个元素的指针,因此sizeof(str)返回的是指针的大小,即4。



注意以下三种形式的参数是完全等价的:
void Func(char str[100]);
void Func(char str[]);
void Func(char *str);因为传递的本质上是指针,所以维数也是不必要的。以下调用是完全合法的:
void Func(char str[100]);
char ch[10];
Func(ch);
全部回答
  • 1楼网友:duile
  • 2021-11-14 09:26
老师回答的厉害
  • 2楼网友:十年萤火照君眠
  • 2021-11-14 07:59
char 类型的每个数据占一个字节,数组的话就乘以它的长度,这道题应该是100
  • 3楼网友:怙棘
  • 2021-11-14 06:47
因为是Func()是一个函数,所有传递只是str数组的首地址。追问首地址不是代表数组么 char str[100]; sizeof(str) 也是首地址啊。追答你可以这样理解,一个数组相当于一栋楼,a[0]代表一楼,a[1]代表二楼。
首地址只是告诉这栋楼的地址,至于这栋楼有多高,只有住在这栋楼里的人(变量作用域)才知道。
至于其他人,只要知道这栋在哪里就行了。追问那上面为什么等于4 也应该是1啊。追答所有的指针大小都是4.
char *p1;
int *p2;
dword *p3;

Func ( char str[100] ) 也可这样写Fun(char *str)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯