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