《c++程序设计语言第四版》---关于数组的总结

开始总结数组是因为看到一个例题,当时没想明白。如下:

const int size = 4*1024;
char page[size];
void f(){
    page[size+size] = 7;
    cout<<page<<endl;
}

当主函数调用f()时,没有输出。因为f()里面赋值是给了page[size+size],相当于把数值写入了一个毫不相关的内存区域,而page里面并未赋值( page的大小是size!),[ ]里面应该填写 0 ~ size-1 数值才表明赋值给了page。

而数字7代表什么呢?其实是ascii码的7,查询对应的字符是什么即可;

例如,把7改成48(48是'0'的ascii码值)同时把size+size改成 0 ~ size-1 期间的值,就可以输出‘0’。

!!!

在这里区分一下数组的定义、初始化与赋值:

int str1[6] = ? ; //这个?填的是对整个str1一维数组的初始化值
str1[6] = ? ; //这个?填的是数组str1里面第七个数的值(0~6)

----------------------------------------------------------------------------------------------------------------------------------

关于传递数组的问题

“不能以值传递的方式直接把数组传递给函数,我们通常传递的是指向数组首元素的指针”,因此:

1.一维数组

void comp(int* arr,int num){//int *arr等价于int arr[],,也可以是int arr[4],都是首地址
    for(int i=0;i<n;i++){
        //对arr[0~n-1]的操作
        ...
    }
}

2.二维数组

void comp( int mm[2][4] ){//调用时comp(v);
    //传入的参数等价于 comp( int mm[][4] , int dim1 ),调用时comp(v,2);
    //也可等价于 comp(int *mm , int dim1 , int dim2 ),调用时comp(&v[0][0],2,4)或者comp(&v[0],2,4);
    //comp( int mm[][] , int dim1 , int dim2 )会报错,因为多维数组的第二个维度必须是已知的
    //接下来可以对 mm[dim1][dim2] 进行操作
    ...
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值