我是靠谱客的博主 傻傻秋天,最近开发中收集的这篇文章主要介绍指针 与 引用 还有const,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

-

- 指针

先定义一个int类型的a,然后定义一个指针p 指向 a 的地址 ,再定义一个指向a的二重指针q,指向p的地址。

 int a = 10;

 int *p = &a; // int *p; p = &a; so *p == 10; p == &a; 

   cout<<" &a is "<<&a<<endl; //&a is 0x22fe3c a 在内存 中的地址

   cout<<" p is "<<p<<endl; // p is 0x22fe3c p 是 a 的地址    cout<<" &p is "<<&p<<endl; // &p is 0x22fe30 p也是一个变量,要给它分配空间

 cout<<" *p is "<<*p<<endl;// *p is 10

 int **q; //a 的 二次指针 q = &p;

  cout<<" &q is "<<&q<<endl;// q 在内存的地址 ,q也是一个变量,要给它分配空间 &q is 0x22fe28

 cout<<" q is "<<q<<endl; // q 是 p在内存的地址 q is 0x22fe30 cout<<" *q is "<<*q<<endl; // a 在内存的地址 *q is 0x22fe3c -----------

 

 

 引用

 定义一个int变量a,然后用a1来引用a,实际上a1的内存地址就是a

int a = 10;

int &a1 = a;

cout<<" a is "<<a<<endl; // a is 10

 cout<<" &a is "<<&a<<endl;// &a is 0x22fe34

cout<<" &a1 is "<<&a1<<endl; // &a1 is 0x22fe34 a1就是a的别名

 int b = 64;

  a1 = b;

 cout<<" a1 is "<<a1<<endl; //a1 is 64

 cout<<" &a1 is "<<&a1<<endl;// &a1 is 0x22fe34

  cout<<" b is "<<&b<<endl;//b is 0x22fe30

  cout<<" a is "<<a<<endl; // a is 64 改变a1等于改变a ---------- 

const用法

- 1.定义常量变量,这样这个变量在后面就不可以再被修改

const int a = 10;

  a = 2;//错误,不可被修改

2.传参时参数不被修改, 引用传递则函数外部传进来的变量的值也发生改变

void f1(const int &a)

{ a = 4; //error }

void f2(int &a) { a= 4; //no error }

3.const a = 3;

 int b = a;//为a分配内存

 int c = a;//不在分配内存

 const定义的变量,系统只为它分配一次内存,而使用#define定义的常量宏,能分配好多次;

 4. C++中一个类中使用const来修饰函数 防止修改非static类成员变量

class { public: void fun() const //加const修饰

 { a = 10; //出错,不可修改非static变量

b = 10; //对,可以修改

 }

private:

int a ;

static int b;

}

 

 5. int a = 10;

int *const a1 = &a; 

const int *a2 = &a; 

只有一个const 远远相配,近者在一起 如果const在表达式最左边,则最右边的数据为常量,剩下的为变量

如果const在表达式中间,则距离它最近的那个为常量不可变,剩下那个为变量

2个const: const修饰指针变量时:指针和数据都为常量不可变。  

最后

以上就是傻傻秋天为你收集整理的指针 与 引用 还有const的全部内容,希望文章能够帮你解决指针 与 引用 还有const所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部