C++中的指针和引用,结合数组

来源:互联网 发布:儿童绘画软件pc 编辑:程序博客网 时间:2024/06/05 18:29

聊以此文记录c++ primer的学习过程


int a = 3;const int *b = &a;//可以这样,将非常量的地址赋给b//此时,b认为自己指向的是常量,//所以不能通过b去修改a的值const int &ar = a;// ar引用a,不能通过ar去修改a的值/*******************************/const int a = 3;int *ap =  &a;// 错误,因为a是常量,而int *ap的言外之意,//是通过ap可以修改ap所指向的内容int *ar = a;//显然,也是错误;/******************************/const int &b = 5;//正确,字面常量可以如此赋值给b;int &c = 5;//错误,5是常量,而int &c 是说c引用的不是常量/******************************///附加上数组int *ptrs[10];//ptrs是含有10个整型指针的数组// 从右往左看,[10]代表ptrs是一个数组//而* 则代表数组每个项是指针;//int,则代表指针是int型的int (*ptrs)[10];//从括号内开始读;//ptrs是一个指针,而不是一个数组,//[10] 是说ptrs指向含10个元素的数组int (&ptrRef)[10];//同理,ptrRef是一个引用,//其引用一个含有10个整数的数组int &ptrRef[10];//错误!不存在引用的数组int *(&array)[10];//根据以上方法,array是一个引用//array引用一个含有10个元素的数组//每个元素是一个指针//每个指针是整型的// 因此,array是数组的引用,该数组含有10个指针;



typedef int arrT[10];//arrT是一个类型别名,它表示的类型是含有10个整数的数组using arrT = int[10];//arrT的等价声明,arrT* fun(int i);//func 的返回值是一个指针,指向含有10个元素的数组/******************************************/int (*func(int i))[10];//func(int i)表示调用func函数时,需要一个int类型的实参//(*func(int i)) 以为这可以对函数调用的结果执行解引用操作//(*func(int i))[10] 表示解引用func的调用将得到一个大小是10的数组//int (*func(int i))[10] 表示数组中的元素都是int类型



0 0
原创粉丝点击