函数与数组

数组名

  1. C++将数组名解释为第一个元素的地址
    int cookies[8];
    则 cookies==&cookies[0]
    (例外:对数组名使用sizeof将得到整个数组的长度,以字节为单位;
    将地址运算符用于数组名时将返回整个数组的地址,如&cookies返回一个32字节内存块的地址)

    2.数组名做函数参数
    int sun_arr(int arr[],int n)
    int sun_arr(int *arr,int n)
    两者都是正确的,在C++中当且仅当在函数头或函数原型中int arr[]和int arr含义才相同;
    数组表示法提醒用户arr不仅指向int,还指向int数组的第一个int.
    3.将指针包括数组名加1,实际是加上了一个与指针指向的类型的长度(以字节为单位相等的值);
    arr[i]==
    (arr+i)
    &arr[i]==arr+i

将数组名作为函数参数

意味着将数组地址传递给函数;
传递常规变量时,函数使用的是变量的拷贝;
传递数组时,函数使用的是原来的数组;

在这里插入图片描述

注意

如上图所示,sizeof(cookies)==32 //表示整个数组长度
sizeof(arr)==4 //表示指针变量的长度
因此,必须显示传递数组的长度,不能使用sizeof(arr)

显示数组及对数组的保护

void show_arry(const double ar[],int n)
表明指针ar指向的是常量数据不能使用ar修改数据,但并不意味着原始数组必须是常量。

函数与二维数组

二维数组作为函数参数

int sum(int ar[][4],int size)

int sum(int (*ar2)[4],int size)

int (*ar2)[4]:ar2表示指向由4个int组成的数组的指针
int *ar[4]:ar表示由4个指向int的指针组成的数组。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值