C语言中指针与数组

#define SIZE 10
int arry[SIZE]={0,1,2,3,4,5,6,7,8,9}; //数组名arry表示数组首元素的地址
*int p,temp;

//可直接初始化定义指针:int *p=arry;

//通俗理解就是对指针进行初始化,将指针p指向数组首元素地址,这一地址中存放着一个int类型的数值

p=arry; //将数组首原始地址赋予指针p,==&arry[0]

arry+1; //表示地址加4个字节,即指下一个数组元素arry[1]地址,即&arry[1]

p+1; //等效arry+1

*p==arry==(&arry[0]); //*表示解引用,*p==arry[0],即指向存放在&arry[0]上的值

*p+1==arry+1==(&arry[0])+1 //表示arry[0]+1,*的优先级大于+

(p+1)==(arry+1)==(&arry[1])* //表示arry[1],数组首元素地址(&arry[0])加4个字节指向下一个元素的地址,对其接引用

temp=*p++; //表示先对p的接引用的值(arry[0])赋值给temp,后p地址自增再对其解引用(arry[1])赋值给temp

*函数中的指针:
double show_arry(int arry[])==double show_arry(int p)
调用这个函数方式:show_arry(arry);
指针表示法和数组表示法是等同的:
p[0]=arry[0]=0;
p[5]=arry[5]=5;

指针与多维数组:
int arry[4][2]={{1,2},{3,4},{5,6},{7,8}}; //二维数组是由4个一维数组组成的,其中一个一维数组包含2个int类型元素

int *p;

arry //arry表示的是二维数组中的首元素(也就是第一个一维数组,其中包含两个元素)地址(&arry[0]),也就是说arry包含两个int类型元素;准确的说就是arry与&arry0是相等的,可以把arry理解为二维数组的数组名

arry[0] //arry[0]表示第一个一维数组首元素的地址(&arry[0][0]),可以把arry[0]理解为第一个一维数组的数组名

//之所以说arry的值与arry[0]的值相等是因为两个首元素地址都是&arry[0][0],都是从这个开始所以两者的值是相等的

arry[0]==&arry[0][0] //arry[0]是一维数组的数组名,一维数组首元素的地址

*arryarry[0]&arry[0][0] //arry表示(&arry[0])

**arry==arry[0]==(&arry[0][0])==arry[0][0] //arry是指向arry[0]的地址(&arry[0]),其中存放的是arry[0],*arry指向arry[0][0]的地址(&arry[0][0],**arry是对arry[0]的解引用等于arry[0][0])

//特别要注意理解arry、arry[0]、&arry[0][0]之间的关系
arry==&arry[0],但是arry的值和arry[0]是相等的因为都是从同一个地址开始的,其中arry[0]&arry[0][0],*arryarry[0],**arry==arry[0][0]。

arry+1和arry[0]+1不一样,其中arry+1是表示增加2个int,arry[0]是表示增加1个int;

arry+1 //表示的是第二个一维数组首元素(arry[1])的地址(&arry[1])

arry[0]+1 //表示的是第一个一维数组首元素地址加1指向第二元素地址(&arry[0][1])

*arry+1=arry[0]+1==&arry[0][1]

指针与多维数组:
int (p)[2] //表示一个p指向一个内含两个int类型值的数组,其中[]的优先级大于所以加()

pz=arry;
指针表示法与数组表示法关系*((p+2)+1)=p[2][1]=6 arry[m][n]==((arry+m)+n) p[m][n]==(*(p+m)+n); //可用数组or指针表示

int **pz //表示指向指针的指针,它指向的指针指向int。

好了,为了禁止无限套娃就写这么多吧。
疫情爆发封校又不能出去,好无聊呀,天天这样好无聊呀,要么看手机,要么看奥运,感觉都与世隔绝了。这几天好烦躁呀,还是看看书平复下压抑的心情吧。龙队yyds

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值