#include <stdio.h>
void test(char a[])
{
printf("%d\n", sizeof(a));
}
int main()
{
char a[10] = {0};
printf("%d",sizeof(a));
test(a);
return 0;
}
char型正常来说占用1个字节的空间,a[10]为一个数组,每个数组都是char型,因此printf打印出来的结果为10,这个没有问题。但是为什么将数组a传给一个函数后打印出来的结果为4呢?难道不该为1吗是char型的啊?
上述问题一开始我百思不得其解,后来经过查找发现忽略了一个问题,test传过去的是a数组的函数首地址,所以我认为是一个字节,但是,传输的地址是需要用指针来接收,指针大小是跟机器位数相关的32位的为4,64位为8,因此终于解开了为何此代码打印结果为10和4的困惑了!