大可爱 发表于 2018-10-10 21:17:20

数组名 和指针

本帖最后由 大可爱 于 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]
查看完整版本: 数组名 和指针