c语言指针一览第一部分(新手向)

c语言指针一览第一部分(新手向)

um…最近学到了指针,又恰逢寒假集训队选拔,把指针复习一下,
函数指针最后在说吧rua。
(编者注:以下的p是指明了指向谁的)

一.一维数组与指针:
首先要知道a[1]中a即数组名就是首地址a[0]。
基本形式三种等价表示方法
1 .int*p=&a[1] ; low
2.int p ;int a[1] ; p=a ; medium
3.int p=a; (实际上是int (p=a)) pro
4.p+i等价于a+i即是从零开始加i个元素所以是第i+1个元素的指针。
5.由4推测出
(p+i)和p[i]和a[i]等价。
6.由以上的内容可知访问一个一维数组的值a[i]可以有两种方法1.直接a[i].2.访问 (p+i)
7.指针变量可以改变p++(放在循环里),a++是非法的(a[0]++是个啥,,xd)
8.在来讲一下各种++,–的问题
一般情况下分为两类 (p++)=a[i++] p(–)=a[i–]他们是从a[0]开始的,另一类是++p,–p他们是从a[1]开始的
二.二维数组与指针
1.对于一个二维数组而言a[i][j]而言,a[i]就是首地址,即a[0][0],a+i指的是第i行的首地址,这里可以给出解释二维数组可以看成x行含有y个数的一维数组即a[1]是由a[1][0],a[1][2]…到最后一个数。
2.有了行的概念,我们可以很容易理解列的地址是a[i]+j这会事,即某一行一维数组上的某数是由其与首地址的偏移量决定的。所以可以利用列的地址指向一个二维数组中的实际值
3.下列有一串我举得很重要的知识点
1.a[i]+j=
(a+i)+j 2.1中的式子指的是a[i][j]的地址值,所以可推出
(
(a+i)+j)就是a[i][j]的值
(犯二:a[i]是第二行首地址的值,(a+i)是她的地址)(删除)
2.二维数组地址索引:a.表示行地址:**a,(a+i),&a[i] b.表示列地址:a[i], (a+i)+j, (a+i),a[i]+j, 表示值的地址(a+i)+j ,指向值的指针(
(a+i)+j)。
*

猜你喜欢

转载自blog.csdn.net/weixin_44067773/article/details/84999243