|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 就是杨小叨 于 2017-2-27 14:21 编辑
- #include <stdio.h>
- void get_array(int b[10]);
- void get_array(int b[10])
- {
- int i;
- printf("sizeof b: %d\n", sizeof(b));
- }
- int main()
- {
- int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
- printf("sizeof a: %d\n", sizeof(a));
- get_array(a);
- return 0;
- }
复制代码
运行后 a=40;b=8???
为什么b=8呢?
本帖最后由 kai759630 于 2017-3-9 16:30 编辑
应该是编译器版本不一样吧,这里的实参数组a是被当做一个地址(事实上是数组的第一个 元素a[0]的地址)传进get_array()函数了,所以大小只是一个数组元素的大小,要知道实际参数可以是常量,变量或表达式的,要是还不清楚可以去看下函数调用一节。
- #include <stdio.h>
- void get_array(int *b);
- void get_array(int *b)
- {
- printf("sizeof b: %d\n", sizeof(b));
- }
- int main()
- {
- int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
- printf("sizeof a: %d\n", sizeof(a));
- get_array(a);
- return 0;
- }
复制代码
其实直接用上面指针也是可以的。
|
|