C 语言行指针与列指针详解
首先我们来看下面的代码
上面这部分代码输出的结果是什么呢?
行指针:指的是一整行数据,不指向具体的元素.
列指针:指的是一行中某个具体元素.
我们可以理解成为行指针的具体元素,行指针理解为列指针的地址 他们可以相互的变化
*行指针 列指针
&列指针 行指针
讲解下上面的代码
a是这个“特殊的”一维数组的名称,也就是首地址,也就是第一个元素的地址,也就是第一行的首地址,是指首行一整行,并不是指某个具体元素。那么我们称之为“行指针”,
既然我们知道了a是行指针那么在我们所学习中的一个指针加1就是偏移一个单位,而a的单位是一行,所以p=a+1 即p指向了第二行,即p=a[1].
b = *p+1,p是存放的第二行的首地址,那么*p即拿到了第二行的首个元素的地址,那么 *p+1就是便宜一个int,因为此时*p就是一个int指针.所以b=*p+1 即 b=&a[1][1]
c = *a + 1; 根据上面所说的c=&a[0][1].
printf("a=%d ", **(a));这个就没啥好说了 **(a) 等同于 a[0][0].
根据上诉所说 输出结果
所以列指针指向的是某一行的具体元素,上面例子中的b和c
行指针指向的是指向一整行数据,不是指向具体的某个具体的数据.上面例子的a和p
行指针和列指针多应用于矩阵,在实际普通开发中比较少运营到,但是可以帮助对指针更深入地了解.
以上是8年开发经验对行指针和列指针的个人理解,欢迎大家讨论交流.
我会不断地分享我自己认为在C语言中比较难理解的知识点,欢迎大家关注点赞转发.