1 引用
简单理解引用就是一个变量的另一个名字,从这个名字的角度对变量可以加以修饰,同时拥有const指针的特性 ,所以在声明时必须初始化
1 int a=1;
2 const int b=4;
3 int& ref_a;//必须初始化 :declared as reference but not initialized
4 const int& ref_a_const=a;
5 ref_a++;
6 ref_a_const++;//只读的:increment of read-only reference ‘ref_a_const’
7 int& ref_b=b;//类型不匹配: invalid initialization of reference of type ‘int&’ from expression of type ‘const int’
8 const int& ref_b_const=b;
2 指针
2.1 常用的声明(阅读规则)
int a;定义一个整型数
int *a;指向整型数的指针
int **a;指向指针的指针,它指向的指针指向整型数
int a[10];拥有10个整型数元素的数组
int *a[10];拥有10个指向整型数指针的数组
int (*a)[10];指针 这个指针指向有10个整型数的数组
int (*a)(int);指向函数的指针,该函数返回int ,有一个int参数
int (*a[10])(int);数组-》有10个指针-》每个指针指向函数-》函数返回int,有一个int参数
2.2指针运算
int b[5]={1,2,3,4,5};
int *pint=(int *)(&b+1);
//必须初pint指向了"b[5]"
2.3指针常量、常量指针
这种事有点文字游戏,指针常量(* const)就是一个常量,常量指针(const *)就是一指针,但是在它看来它所指向的变量x是个常量,无论x是不是常量。
例如:
int * const p1;//是指针常量,它本身的内容是不能被修改的,但是里面指针指向的内容是可以修改的。
int const * p2;//常量指针,它们本事可以别修改,但是指向的内容不可修改
const int* const p3;//常量指针,并且指向的内容也不可以修改的。
1 #include<stdio.h>
2 int main()
3 {
4 int a=10,b=30;
5 const con_a=20;
6 double d=1.2,f=1.2;
7 int *p_a=&a;
8 int * const p_con=&a;
9 int const * con_p=&b;
10 const double* const con_p_con=&d;
11 //p_con=&b;//p_con是常量,所以p_con不能指向其他内容
12 (*p_con)+=1; //代表这a++;
13 printf("a=%d\n",a);//11
14 a++;
15 printf("a=%d\n",a);//12
16 //con_a++;//常量,值不能改变
17 con_p=&a;//常量指针,可以指向其他地址
18 //(*con_p)++;//不能改变,虽然a不是常量,但是在con_p看来a是常量
19 //(*con_p_con)++;
20 //con_p_con=&f;//不可改变
21 }
3
this指针:this指针的作用域是类内部,在类的非静态函数中访问类的非静态成员时,编译器会自动将对象地址作为一个隐含的参数传递给函数
调用成员函数时,会将当前对象的this指针传递给成员函数。一个类的成员函数体只有一个,而成员函数之所以能够把属于此类的各个对象区别开来,是因为每个执行类成员函数时,都会把当前对象的this指针传入成员函数,
4指针与函数
1 #include<iostream>
2 using namespace std;
3 int max(int x,int y)
4 {
5 return (x>y?x:y);
6 }
7 //这个函数返回的是指针
8 float * find(float *p,int x)
9 {
10 return p+x;
11 }
12 int main()
13 {
14
15 float score[]={10,20,30,40};
16 int (*p)(int ,int);//这个指针指向函数
17 float *q=find(score+1,1);
18 int a;
19 p=max;
20 a=(*p)(1,2);
21 cout<<"a="<<a<<endl;
22 cout<<"*q="<<*q<<endl;
23 return 0;
24 }
分享到:
相关推荐
"C++引用和指针的区别、C++虚函数原理、C++面试经验" C++ 引用和指针是两种不同的概念。虽然它们都可以用来表示内存地址,但是它们有着不同的特点和应用场景。 1. 相同点:引用和指针都是地址的概念,指针指向一块...
指针和引用是C++语言中两种不同的概念,初学者容易把它们混淆一起。这两种概念都是地址的概念,但它们有很多不同的特点和应用场景。 相同点 1. 都是地址的概念;指针指向一块内存,它的内容是所指内存的地址;引用...
### 指针和引用的区别详解 #### 一、引言 在计算机编程尤其是C++中,指针和引用是非常重要的概念。它们都是用来处理内存地址的重要工具,但两者之间存在本质的区别。本文将深入探讨指针和引用的区别,帮助读者更好...
在C++中,引用(reference)和指针都是用来间接访问其他对象的工具,但它们在使用和行为上有显著的差异。引用的概念是C++特有的,而指针在C和C++中都存在。理解这两种机制的区别对于编写高质量的C++代码至关重要。 ...
总的来说,指针和引用各有优势,指针提供了灵活性和复杂性,而引用则提供了安全性和简洁性。开发者应根据具体需求和场景选择合适的数据结构。在处理内存管理和需要动态改变对象的指向时,指针是必要的;而在需要确保...
在C++编程语言中,引用(Reference)和指针(Pointer)都是用来间接访问其他对象的工具,但它们之间存在着显著的区别。以下是关于C++中引用和指针关系的详细解释: 1. 初始化要求: 引用在声明时必须初始化,即...
### 指针和引用的相同点和不同点的总结 #### 相同点: - **地址的概念**:无论是指针还是引用,在C++中都与内存地址有关联。它们都可以用来表示或访问内存中的数据。 #### 不同点: 1. **实体与别名**: - **...
在C++编程语言中,指针和引用是两个非常重要的概念。正确理解和运用它们能够显著提高代码的效率和可读性。本文旨在深入剖析C++中的引用与指针,并通过具体的例子来对比和解释它们之间的区别与联系。 #### 一、引用...
C++中的引用和指针是两种重要的编程工具,它们在某些方面有相似之处,但在其他方面又有明显的区别。引用和指针都是地址的概念,都可以用来间接访问内存中的数据。然而,它们在使用和行为上存在本质的不同。 首先,...
在C++编程语言中,指针和引用是两种非常重要的概念,它们允许我们间接地访问和操作内存中的数据。以下是一些关于指针和引用的知识点: 1. 指针定义与初始化: - 指针可以用来存储变量的地址。例如,`int x, *p1, *...
在编程领域,C++语言中的指针和引用是两种非常重要的概念,它们都是用来间接访问内存中的对象。这里,我们详细探讨一下这两个主题,并通过提供的文件名称,推测课程内容。 首先,指针是C++中的一种特殊类型,它存储...
在C++编程语言中,引用和指针是两个至关重要的概念,它们在程序设计中扮演着核心角色。本文将详细解析这两个主题,并通过实例代码加深理解。 **引用(Reference)** 引用,顾名思义,是一种特殊的变量,它不创建新...
在C++编程语言中,引用(Reference)和指针(Pointer)是两个重要的概念,它们都用于间接访问内存中的数据。本文将详细解析这两个概念,以及在实际编程中可能出现的问题。 首先,引用是C++引入的一个特性,它类似于...
对于该区别,见如下代码://定义一个c引用a//定义一个指针p指向a这段代码在编译器中的解释如下:向内存中申请一个int型变量,并向其中添加值为1,此时,”a
关于C语言指针和Java引用的思考 该资源主要讨论了C语言指针和Java引用的概念、实现、差异和应用场景。下面是对该资源的详细分析和知识点总结: 1. C语言指针: C语言中,函数的内存都是分配在栈中的,当该函数...
理解指针和引用是C++编程的关键,它们提供了对内存的直接控制,从而实现更复杂的数据结构和算法。然而,这也带来了陷阱和潜在的错误,如悬挂指针和内存泄漏,因此在使用时需要格外小心。本教程的目标是帮助学生掌握...
在C++编程语言中,指针和引用是两种重要的概念,它们都涉及到对象的间接访问,但具有显著的差异。指针是一个独立的变量,存储的是另一个变量的地址,可以改变所指向的地址或地址中存储的数据。而引用则是一个别名,...
总之,理解和熟练掌握C++中的指针和引用是成为一名专业程序员的必备技能。它们在实现高效算法、内存管理、数据结构和类的设计等方面都起着至关重要的作用。在学习过程中,特别要关注指针的运算规则、引用的限制以及...