C语言指针(二)

前面写啦一个C语言的指针,发现有同学理解上还有些问题,不过问题你们可以给我留言或者简信。也很感谢给我提出一些意见和建议,感谢大家的关注与支持。

指针与二维数组

二维数组

int a[2][3];

1.任何一个二维数组都由若干个一维数组组成
2.二维数组名是一个地址常量,在二维数组中,a的值与a[0]相同,但是基本类型不相同。a等价于一个二维指针,而a[0]是一个一维指针。

错误赋值
int a[3][4] = {0},*p;
p=a;
简单的理解就是,p是(int*)类型,而a是一个(int**)类型的,因此赋值类型不一致

3.取数组元素 a[i][j] 的地址常用有3种方法
(1).&a[i][j] //简单粗暴
(2).a[i]+j //这个在上一篇也讲过指针的运算
(3).(a+i)+j //a[i]等价于(a+i) (*(a+i))[j] 这样也可以哟

指针数组与二维数组

1.定义指针数组
指针数组的定义形式:类型名 指针数组名[常量表达式];
说明:[]的优先级高于
,因此p先与[]结合,构成p[3],说明p是一个数组名;在它前面的*号,则说明数组p中的每个元素只能存放指针。

int a[3][2] = {1,2,3,4,5,6},*p[3];
p[0] = a[1];

哈哈,每天更新一点点,这样更方便阅读吧,不要说我偷懒,

    原文作者:xacker
    原文地址: https://www.jianshu.com/p/8dfe8bf7fd2c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞