`
gyht0808
  • 浏览: 115614 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

引用和指针

阅读更多

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++引用和指针的区别、C++虚函数原理、C++面试经验" C++ 引用和指针是两种不同的概念。虽然它们都可以用来表示内存地址,但是它们有着不同的特点和应用场景。 1. 相同点:引用和指针都是地址的概念,指针指向一块...

    C++指针与引用的区别

    指针和引用是C++语言中两种不同的概念,初学者容易把它们混淆一起。这两种概念都是地址的概念,但它们有很多不同的特点和应用场景。 相同点 1. 都是地址的概念;指针指向一块内存,它的内容是所指内存的地址;引用...

    指针和引用的区别

    ### 指针和引用的区别详解 #### 一、引言 在计算机编程尤其是C++中,指针和引用是非常重要的概念。它们都是用来处理内存地址的重要工具,但两者之间存在本质的区别。本文将深入探讨指针和引用的区别,帮助读者更好...

    C++引用&和指针在作为形参时的区别

    在C++中,引用(reference)和指针都是用来间接访问其他对象的工具,但它们在使用和行为上有显著的差异。引用的概念是C++特有的,而指针在C和C++中都存在。理解这两种机制的区别对于编写高质量的C++代码至关重要。 ...

    内存中引用与指针之间的使用与区别

    总的来说,指针和引用各有优势,指针提供了灵活性和复杂性,而引用则提供了安全性和简洁性。开发者应根据具体需求和场景选择合适的数据结构。在处理内存管理和需要动态改变对象的指向时,指针是必要的;而在需要确保...

    C++ 中引用和指针的关系实例详解

    在C++编程语言中,引用(Reference)和指针(Pointer)都是用来间接访问其他对象的工具,但它们之间存在着显著的区别。以下是关于C++中引用和指针关系的详细解释: 1. 初始化要求: 引用在声明时必须初始化,即...

    指针和引用的相同点和不同点的总结.pdf

    ### 指针和引用的相同点和不同点的总结 #### 相同点: - **地址的概念**:无论是指针还是引用,在C++中都与内存地址有关联。它们都可以用来表示或访问内存中的数据。 #### 不同点: 1. **实体与别名**: - **...

    浅析C++中的引用与指针

    在C++编程语言中,指针和引用是两个非常重要的概念。正确理解和运用它们能够显著提高代码的效率和可读性。本文旨在深入剖析C++中的引用与指针,并通过具体的例子来对比和解释它们之间的区别与联系。 #### 一、引用...

    c++中引用和指针的区别和联系

    C++中的引用和指针是两种重要的编程工具,它们在某些方面有相似之处,但在其他方面又有明显的区别。引用和指针都是地址的概念,都可以用来间接访问内存中的数据。然而,它们在使用和行为上存在本质的不同。 首先,...

    C++习题(指针和引用)[参考].pdf

    在C++编程语言中,指针和引用是两种非常重要的概念,它们允许我们间接地访问和操作内存中的数据。以下是一些关于指针和引用的知识点: 1. 指针定义与初始化: - 指针可以用来存储变量的地址。例如,`int x, *p1, *...

    指针&引用的课件(全)

    在编程领域,C++语言中的指针和引用是两种非常重要的概念,它们都是用来间接访问内存中的对象。这里,我们详细探讨一下这两个主题,并通过提供的文件名称,推测课程内容。 首先,指针是C++中的一种特殊类型,它存储...

    C++ Primer注解之引用和指针

    在C++编程语言中,引用和指针是两个至关重要的概念,它们在程序设计中扮演着核心角色。本文将详细解析这两个主题,并通过实例代码加深理解。 **引用(Reference)** 引用,顾名思义,是一种特殊的变量,它不创建新...

    C++引用与指针问题释疑与疏证

    在C++编程语言中,引用(Reference)和指针(Pointer)是两个重要的概念,它们都用于间接访问内存中的数据。本文将详细解析这两个概念,以及在实际编程中可能出现的问题。 首先,引用是C++引入的一个特性,它类似于...

    StrongDwarf#learning-notes#引用和指针的区别以及引用在高级语言中的实现2

    对于该区别,见如下代码://定义一个c引用a//定义一个指针p指向a这段代码在编译器中的解释如下:向内存中申请一个int型变量,并向其中添加值为1,此时,”a

    关于C语言指针和java引用的思考.pdf

    关于C语言指针和Java引用的思考 该资源主要讨论了C语言指针和Java引用的概念、实现、差异和应用场景。下面是对该资源的详细分析和知识点总结: 1. C语言指针: C语言中,函数的内存都是分配在栈中的,当该函数...

    数学C变量引用及指针使用PPT学习教案.pptx

    理解指针和引用是C++编程的关键,它们提供了对内存的直接控制,从而实现更复杂的数据结构和算法。然而,这也带来了陷阱和潜在的错误,如悬挂指针和内存泄漏,因此在使用时需要格外小心。本教程的目标是帮助学生掌握...

    指针传递和引用传递的区别

    在C++编程语言中,指针和引用是两种重要的概念,它们都涉及到对象的间接访问,但具有显著的差异。指针是一个独立的变量,存储的是另一个变量的地址,可以改变所指向的地址或地址中存储的数据。而引用则是一个别名,...

    数学C变量的引用及指针的使用PPT学习教案.pptx

    总之,理解和熟练掌握C++中的指针和引用是成为一名专业程序员的必备技能。它们在实现高效算法、内存管理、数据结构和类的设计等方面都起着至关重要的作用。在学习过程中,特别要关注指针的运算规则、引用的限制以及...

Global site tag (gtag.js) - Google Analytics