C++ 变量相关知识小结

疫情所迫,希望用这种方法督促自己坚持学习。同时记录在找工作过程中的艰辛不易。博客内容持续增减修改,都为摘录和个人理解。欢迎各位批评指正其中错误,相互勉励,共同进步。

变量的声明和定义

声明和定义
准确理解声明和定义的区别是十分重要的。当一个工程由多个文件所构成,声明使得变量被所有的文件所熟知。一个文件如果想要使用别的文件中的变量,就必须包含对该变量的声明。 定义负责创建与名字相关联的实体。

extern int i;      //对i进行声明
int i;             //对i进行定义

变量的作用域
变量分为局部变量和全局变量。当我们重复定义一个变量时,后面会覆盖掉前面的内容。除非使用域操作符,如下代码所示:

int i = 10;
void main()
{
	for (int i = 0; i < 5; ++i) {
		cout << i << endl;            //随着循环输出0,1,2,3,4
		cout << ::i << endl;          //始终输出10
	}
}

引用
引用就是为变量取得另外一个名字。其基本定义方式如下:
其中ip就是变量i的引用

int i;
int &ip = i;

需要注意以下几点:

int &a;           //错误,引用需要指定确定的对象
int &a = 10;      //错误,引用初始化值必须是一个对象
char b;
int &a = b;      //错误,引用与对象必须是相同的类型

指针
指针就是指向一种类型的复合类型。指针也是对象,允许拷贝和赋值。其基本定义方式如下:

int *p1, *p2;           //定义了两个指向int类型的指针
double p1, *p2 = &p1;    //p2为指向p1的指针
double *p3 = p2;         //*p3的值等于*p2等于p1

指针的值应该属于以下4种状态的一种:

  1. 指向一个对象;
  2. 指向紧邻对象所占空间的下一位置;
  3. 空指针,意味着指针没有指向任何对象;
  4. 无效指针,除以上的其余情况;

在这里插入图片描述
空指针的赋值方法

int *p1 = nullptr;
int *p2 = 0;
int *p3 = NULL;

void*类型指针
void*类型的指针可以指向任意类型的数据

double a , *p1 = &a;
void *p2 = &a;
p1 = p2

指针的指针
由于指针存储的是指向元素的地址,因此该地址的存储空间也有地址,就存在指针的指针。以此类推也会有指针的指针的指针。

 char a, *p1 = &a;
 char **p2 = &p1;       //指针的指针
 //因此该代码中,**p2 = *p1 = a

指向指针的引用
引用不是对象,不能定义指向引用的指针。但是指针是对象,所以存在对指针的引用。

int i = 10;
int *p1;
int *&p2 = p1;
p2 = &i;
cout << *p1 << " " << i << endl;     //输出为10  10 
*p2 = 0;
cout << *p1 << " " << i << endl;     //输出为0 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值