C语言的数组指针与指针数组(One)

一、数组指针与指针数组:

  • 数组指针<——>本质是指针
  • 指针数组<——>本质是数组
    上图:
数组指针与指针数组
理解*(arr +0)     &arr[0]     &arr[0]+1

a 表示第 0 行首地址, a+i 表示第 i 行首地址
*(a+i), a[i], &a[i][0]表示第 i 行第 0 个元素地址
*(a+i)+j, a[i]+j, &a[i][j]表示第 i 行第 j 个元素地址
*(*(a+i)+j) *(a[i]+j), a[i][j]表示第 i 行第 j 个元素

二、数组指针: int (*pName)[N];

对一维数组取地址,等价于数组指针而不是二级指针。
例如:

int arrray[10];
int(*pa)[10] = &array; 正确
int **pa = &array; 错误

指针 32位机下,大小均为4个字节;
指针的本质,就是一个有类型的常量地址;

  Type * var;
  type 决定了类型(步长),* 表示该变量是指针,var 用于存储地址;
  切记: 指针的运算是,地址值+类型的运算;

int [10]   printf("(int)&a[9]-(int)&a[4] = %d\n",
(int)&a[9] -(int)&a[4])=20;
(int)&a[9] 结果为int型数值了;
  • 二级指针:是一种指向指针的指针。程序员可以通过它实现间接访问数据,和改变一级指针的指向问题。
    (1)、定义、初始化;通过n级指针,修改n-1级指针的指向;间接数据访问;
    (2)、二级指针的步长,都是4字节。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,494评论 3 44
  • 什么是变量 变量就是一块可以存放数据的内存空间,这块内存空间的大小,取决于变量的类型。 什么是指针 内存在计算机中...
    Sivin阅读 1,235评论 1 2
  • 前言 最近真的是忙的不可开交,公司一直给安排任务,连学习和写笔记的时间都没有了,落下好几次课的笔记都没有写,所以我...
    Xiho丶阅读 1,551评论 1 12
  • void* 类型指针:通用变体类型指针;可以不经转换,赋给其他指针,函数指针除外;malloc返回的就是void*...
    冰吉凌阅读 3,390评论 0 18
  • 我最不喜欢的就是面条了 很久才吃一下 然而 我不喜欢吃的原因是我不会做……这世上总有人能做到我做不到的事情,所以也...
    梦海蓉阅读 309评论 0 0