主要复合类型:引用和指针
1.引用
允许在一条语句中定义多个引用,其中每个引用标识符都必须以&开头。
#include<iostream> using namespace std; int main() { int b; int &a = b; b = 6; cout << "a:" << a << endl; cout << "b:" << b << endl; }
输出:a:6 b:6
#include<iostream> using namespace std; int main() { int b; int &a = b; a=1; b = 6; cout << "a:" << a << endl; cout << "b:" << b << endl; }
输出:a:6 b:6
2.指针(难点)
指针:指向另外一种类型的复合类型。与引用类似,指针实现了对其他对象的间接访问。然而与引用相比又有很多不同点。(1)指针本身就是一个对象,允许对指针赋值和拷贝,在指针的生命周期内可以先后指向几个不同的对象。(2)指针无需在定义时赋初值。
指针值:(1)指向一个对象(2)指向紧邻对象所占空间的下一个位置(3)空指针,没有指向任何对象(4)无效指针
#include<iostream> using namespace std; int main() { //使用指针 int *a; int b = 5; a = &b; //b = 6; cout << "*a:" << *a << endl; cout << "a:" << a << endl; cout << "&b:" << &b << endl; cout << "b:" << b << endl; }
输出
利用指针访问对象,如果指针指向了一个对象,则允许使用解引用符(操作符*)来访问该对象。
某些符号有多重含义:像&和*的符号,既能用作表达式里的运算符,也能用作声明的一部分。
上述代码也可以写成:
#include<iostream> using namespace std; int main() { //使用指针 int b = 5; int *a=&b; cout << "*a:" << *a << endl; cout << "a:" << a << endl; cout << "&b:" << &b << endl; cout << "b:" << b << endl; }
指向指针的指针:通过*的个数区别指针的级别。**表示指向指针的指针,以此类推。
#include<iostream> using namespace std; int main() { //使用指针的指针 int b = 5; int *a=&b; int ** c = &a; cout << "*a:" << *a << endl; cout << "a:" << a << endl; cout << "&b:" << &b << endl; cout << "b:" << b << endl; cout << "*c:" << *c << endl; cout << "**c:" << **c << endl; }
输入如下:
解引用int型指针,为了访问最原始的对象,需要对指针的指针做两次解引用。有三种方式输出b的值,(1)直接输出(2)通过int型的指针a输出(3)两次解引用c。
指向指针的引用:引用本身不是一个对象,因此不能定义指向引用的指针。但指针是对象,所以存在对指针的引用。
#include<iostream> using namespace std; int main() { //使用指针的指针的引用 //int型的指针a int * a; //c是对指针a的引用 int *&c = a; cout << "&a:" << &a << endl; cout << "&c:" << &c << endl; }
输出如下
标签:03,cout,指向,int,数据类型,C++,引用,include,指针 From: https://www.cnblogs.com/qhj384343045-/p/18056290