#include<iostream>
using namespace std;
int main()
{
cout<<"2\n";//输出2,换行
cout<<"2\tM\n";//输出2,制表,输出M,换行
return 0;
}
注意有转义字符的话要用”“
#include<iostream>
using namespace std;
int i=2;
int main()
{
int i=3;
cout<<i<<endl;
return 0;
}
//3
内层作用域可以重新定义外层已有的名字
#include<iostream>
using namespace std;
int i=2;
int main()
{
int i,&ri=i;
i=5,ri=10;
cout<<i<<" "<<ri<<endl;
return 0;
}
引用:不是对象,只是为对象起了一个名字,所以实际过程是:5赋给i,再把i更新为10
#include<iostream>
using namespace std;
int i=2;
int main()
{
int i=1,j=2;
int *p=&i;
cout<<p<<" "<<*p<<endl;//p为所指对象的内存地址
p=&j;
cout<<p<<" "<<*p<<endl;//
j=20;
cout<<p<<" "<<*p<<endl;//
*p=10;//显示更改,不能p=10,因为p是地址,*p=10指的是p指向10
cout<<p<<" "<<*p<<endl;//
return 0;
}
结果:
0019FF2C 1
0019FF28 2
0019FF28 20
0019FF28 10
Press any key to continue
指针和引用的区别
指针(指向) | 引用(绑定到) | 共同点 |
1.是一个对象,在定义时不需要赋初值(指向一个不确定的地址),生命周期内可指向不同对象 | 1.不是对象,只是为变量取新名字,必须赋初值 | 实现间接访问 |
2.可赋值 | 2.无法绑定到另一个对象 |
nullptr:空指针,地址为0,如果不清楚指针指向何处,定义的时候指向nullptr或0
int i = 20;void *p = &i;
合法,因为void*p是一种特殊的指针类型,可以存放任意对象的地址
int *const p = &i;
p是一个常量指针,即值不变,永远指向i,因为是常量,所以必须初始化
顶层const :指针本身是一个常量
底层const:指针所指对象是一个常量
以上为《C++primer习题集》笔记