|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 大可爱 于 2018-10-10 22:34 编辑
在大多数表达式中数组名的值是指向第一个元素的指针,但数组名不是左值,例如:无法自增等
数组名作为参数传递给函数时,数组名就是指向第一个元素的指针
但 sizeof (数组名) 是整个数组的字节数
&数组名 是指向整个数组的指针
一个指针告诉我们两信息,起始地址和跨度
字符数组是元素为字符的数组
字符串是 一个以'\0' 结尾的字符数组
int (*p) [4] = &a[0] ;
指针不能当数组用,数组不能当指针用……就这么简单 ^_^
p2 = &b[4] 可以, p2 参考的位置是 b[3]的后面
int (*p)[10] 虽然是定义一个整型指针,但不要忘了它后边还有一个数组,所以它的跨度应该是 sizeof(int) * 10,而 array 作为数组名,它的含义是“指向数组第一个元素的地址”,所以 array 的跨度是 sizeof(array[0])
#include <stdio.h>
int main()
{
int array[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int (*p)[3] = (int (*)[3])&array;
printf("%d\n", p[2][2]);
return 0;
}
数组名 就是数组第一个元素的地址
数组名只是一个地址,而指针 是左值
|
|