Record04—变量的本质

写在前面:该篇针对C编译器进行记录,至于是否适用于C++编译器,日后考证

目录

变量的本质

通过变量来修改内存有几种方法?

内存空间可以再取给别名吗?

变量三要素(名称、大小、作用域),变量的生命周期?

 

C语言中,函数是否可以看成一种数据类型吗?

函数的三要素,名称,参数,返回值;函数也是一种数据类型,只不过比较特殊而已。

变量的本质

变量是既能读又能写的内存对象,若一旦初始化后不能修改的对象则称为常量

理解指针关键在内存,当定义一个int类型的变量,那么内存会分配一个四个字节的位置。同理,定义一个double类型的变量,内存会分配8个字节的位置。

那么,请问,变量的本质是什么?答:是(一段连续)内存空间的别名(是一个门牌号),变量千万不要把变量往内存里面理解,我们通过变量来操作内存。是通过变量往内存里面读写数据,千万不要理解为我们是往变量里面读写数据,变量只不过是一个内存的编号而已!

通过变量来修改内存有几种方法?

1)直接修改内存。

2)间接。内存有地址编号,拿到地址编号也可以修改内存。

两种方法对比一下看,直接修改内存是通过设置变量的方式来进行的。而间接修改内存是通过直接用地址编号来进行修改的。

需要说明的是,在使用变量的方式来修改的时候,不可以把这个过程想象成把变量放入内存当中,而是,把变量当成一个门牌号,具体的放入内存多大空间,是看这个变量的数据类型。

	int a ;
	int b; 
	char *    p ;
	//p = 0xaa11
	a = 10; //1 直接赋值  //cpu里面执行

	printf("&a: %d\n", &a);

	//2间接赋值 ==直接通过内存
	 *((int*)1245024) = 200;   //提取出上面设置的变量a的地址编号为1245024

	 printf("a: %d\n", a);      //如果a的值变了,说明间接赋值的方式也能修改内存。

运行如下,

当然,我可以把提取出来的变量a的地址编号赋值给p,然后,用p去间接的修改变量a的值,这个思路,就是指针的运行原理!,同样这也是一种间接赋值。而且,这个例子也显示出了指针和内存首地址所存在的关联。

	 {
		p = 1245024;  // 间接赋值 通过指针

		*p = 300;
	 }

内存空间可以再取给别名吗?

答:是可以的。(之前博客记载的tpyedef是给数据类型进行取别名的,不是内存空间)

变量三要素(名称、大小、作用域),变量的生命周期?

先解释下,什么叫变量的生命周期,假如说我在Main函数里面,定义了一个变量,即我在main里面去分配了一块儿内存,那这块儿内存空间在其他函数中可以用吗?同理,在sub1函数里面定义的一个变量,在主调函数里面能用吗?(后续待补)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值