常指针 和 常引用
来源:互联网 发布:linux下的socket编程 编辑:程序博客网 时间:2024/04/26 05:11
笔记const
1.常引用
对常引用来说他一般是对由系统临时分配而无法改变的中间变量起别名如以下程序中的两种情况,而引用则是给一般的变量起别名
//引用是给变量起一个别名#include <iostream>using namespace std;int a = 'a';int main(){ /* 以下语句在内存中是这样干的char temp(系统在栈中临时分配的) = a; char &r_a = temp; */ char const &r_a = a; //用(int *)输出存储在栈中r_a的地址 cout << "r_a: "<< r_a << "\n &r_a: " << (int *)&r_a <<endl; cout << "a: "<< a << "\n &a: " << &a <<endl; int const &r1_a = a + 1; //用(int *)输出存储在栈中r_a的地址注意与上面的区别&r_a = a; cout << "r1_a: "<< r1_a << "\n &r1_a: " << (int *)&r1_a <<endl; return 0;}
2.常指针
- 这是指针常量
#include <iostream>using namespace std;int main(){ //指针常量 int a = 10; int * const p_a = &a; //p_a = &a; 注意不能在这儿初始化。 cout << "p_a: "<< p_a << ", *p_a: "<< *p_a << endl; cout << "a: " << a << ", &a: " << &a << endl; *p_a = 1; cout << "*p_a: "<< *p_a << endl; int b = 12; /* p_a = &b; 因为这是一个指针常量, 所以不能乱指,但可以改变其所指内存的值,*p_a = 1; ok的 */ cout<< "p_a: " << p_a << ", *p_a: " << *p_a << endl; cout<< "b: " << b << ", &b: " << &b << endl;}
- 这是常量指针
#include <iostream>using namespace std;int main(){ //常量指针 int a = 10; int const *p_a; p_a = &a; cout << "p_a: "<< p_a << ", *p_a: "<< *p_a << endl; cout << "&a: " << &a << endl; /*p_a = 1; 注意由于此处是常量指针,故而报错, 所以不能改变所指内存的值, 但可以改变他的指向, 如下: */ int b = 12; p_a = &b; //完全没有问题 cout<< "p_a: " << p_a << ", *p_a: " << *p_a << endl; cout<< "b: " << b << ", &b: " << &b << endl;}
总结
int const *p; //常量指针int *const p = &a; //指针常量得在这儿初始化
其实就是看const修饰谁,修饰*p, *p不能改,为常量指针。修饰p, 为指针常量, p 值不能改。类似的还有函数指针、指针函数、数组指针、指针数组、如下:
int (*p)[3]; //(p先与*结合)为指针变量->指向有三个元素的数组int *p[3]; //(p先与[]结合)为一个数组:包含着三个指针元素int (*p)(); //(p先与*结合)为指针变量->指向无参的函数首址int *p(); //(p先与()结合)为函数名:返回类型为int *
0 0
- 常指针 和 常引用
- 对象的常指针和常引用
- 常指针与常引用
- 常指针与常引用
- 7.24常指针 常对象 常引用
- 引用,指针,常引用,常指针
- C++中const类型(二)----常指针和常引用
- const(二):(转) 常指针和常引用
- C++中const类型(二)----常指针和常引用
- 引用、常指针、常引用、指针常量、引用常量
- 引用和常引用区别
- C++常成员函数和常对象、对象指针和对象引用
- 常对象+常对象成员+指向对象的常指针+指向常对象的指针变量+对象的常引用
- C++(常)引用,const,指针引用
- 对象数组,对象指针,常对象、对象的常引用
- 常引用
- 常引用
- 常引用
- C语言(7)--高精度加法、减法、乘法、今天是星期几、四位平方数、候选人选票问题
- hdu5418 BestCoder Round #52 (div.2) Victor and World ( floyd+状压dp)
- poj1990MooFest(树状数组)
- 应对非均衡数据集分类问题的八大策略
- C++类型转换
- 常指针 和 常引用
- Could not initialize class net.sf.json.util.JSONUtils
- 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- Eclipse for github插件安装、使用图解(egit)
- 多线程与基类
- ex08
- 自定义Switch
- [leetcode] 42.Trapping Rain Water
- GridView,AutoCompleteTextView,Spinner,Gallery,ExpandableListView