函数如何使用指针来处理数组

1.C++将数组名解释为其第一个元素的地址 即:a == &a[0]

2.对数组名使用sizeof将得到整个数组的长度(以字节为单位)

3.&a返回的是整个数组的地址

4.将数组地址作为函数参数可以节省复制整个数组所需的内存和时间

 

二、二维数组与指针

int data[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};

int total = sum(data,3);

sum函数的原型是什么?调用函数时为什么将二维数组中的列数作为参数,而不是行数?

data本身类型就是指向4个int类型的数组的指针,sum正确的函数原型是int sum(int (*arr)[4],int size);

说到这,就说一下数组指针与指针数组的区别

数组指针:

int (*p)[n],()的优先级高,说明p是一个指针,指向一个整型的一维数组,该一维数组的长度为n。

int data[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};int (*p)[4];

p=data;  //将该二维数组的首地址赋给p,data[0]或者&data[0][0]

p++;//将跨过p[0][],指向p[1][]

指针数组:

int *p[n],有n个元素的一维数组,每个元素都是一个指针。

int *p[3];

p = data;  //此赋值方法是错误的,因为p是一个未知的表示,只存在p[0],p[1],p[2].....用来存放变量地址。

for(i=0;i<3;i++)
    p[i]=a[i]    //*p = *a; *(p + 1) = *(a + 1);与此种赋值方法一样

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值