搜索
查看: 1798|回复: 17
打印 上一主题 下一主题

求大神啊啊!这不合常理啊!

[复制链接]
楼主
发表于 2013-10-8 10:37:20 | 显示全部楼层
你可以理解成“C语言中根本没有数组这种东西”,有的只是连续分配空间的一种语法糖。
数组在绝大多数情况下都会转换成一个指针,例如
int a[] = {1,2,3};
a[1];
复制代码
a[1]其实不是读取数组元素,编译器总是把它处理成 *(a + sizeof(int) * 1),所以你甚至可以写 1[a]

函数传递参数时,如果参数是数组,则会转换成指向数组首地址的指针
也就是你写
void fun(int a[]);
复制代码
编译器会自动转化为
void fun(int* a);
复制代码
如果你写
void fun(int a[10]);
复制代码
也会被转化为
void fun(int* a);
复制代码
数组的长度是无法用一个参数就传递进去的,因为数组这时候被转换成了指针

点评

嗯!  发表于 2013-10-8 11:55
沙发
发表于 2013-10-8 16:45:53 | 显示全部楼层
当然有意思
把我在另一个帖子里写的东西复制过来,有意思?
板凳
发表于 2013-10-8 16:52:08 | 显示全部楼层
这不是灌水!!!!!!!!!
地板
发表于 2013-10-9 10:52:07 | 显示全部楼层
当然叫下雨
5#
发表于 2013-10-9 10:52:30 | 显示全部楼层
当然叫下雨
这叫浇地么!》》....
6#
发表于 2013-10-13 12:36:13 | 显示全部楼层
超神级 发表于 2013-10-8 17:30
这叫浇地么!》》....

当然叫下雨
7#
发表于 2013-10-13 17:14:16 | 显示全部楼层
超神级 发表于 2013-10-13 16:54

或者叫尿尿······
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表