C语言二级指针和数组言简意赅的总结

本文详细讲解了数组和指针的概念,包括arr与arr[i]的内存理解,指针算术运算,指针数组与指针函数的应用,以及实例分析。重点阐述了如何通过指针操作访问多维数组元素,如a[i][j]的不同引用方式。适合进阶程序员查阅。
摘要由CSDN通过智能技术生成

定义一个arr[3][4]的数组;

则:

arr是指向arr[0]这个数组(arr是二级指针,存放arr[0]这个指针的地址)

arr+1是指向arr[1]这个数组

*arr是第0行数组的首地址,等同于arr[0]

*(arr+1)是第一行的首地址

*(arr+1)+2是第一行第二个元素的地址

第i行第j个元素的地址:

arr[i]+j或者*(arr+i)+j

此元素的值为:

*(*(arr+i)+j)或者arr[i][j]

指针数组:

*p[i]为存放i个指针的数组

数组指针:

(*p)[i]为指向数组的指针


 

若令int(*p)[4]=arr;

第i行第j个元素的地址指针表示为:

*(p+i*4)+j或者p[i]+j或者&p[i][j]

指针函数:

*p(void)为返回值为指针的函数

函数指针:

(*p)(void)为指向函数的指针

实例:

若有定义int a[4][10]; 则以下选项中对数组元素

a[i][j]引用错误的是: (0≤i<4, 0≤j<10) ( )

A)*(&a[0][0]+10*i+j)

B)*(a+i)+j

C) *(*(a+i)+j)

D) *(a[i]+j)      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值