C语言学习难点、知识点总结

知识点1:

在打印局部变量和全局变量的地址的时候,会发现每次运行的时候,全局变量的地址是固定的,局部变量的地址是不固定的,这是因为局部变量是动态存储。如下代码

int k =1;
int main()
{
	int i=1;
	printf("%p\n", &k);
	printf("%p\n", &i);
	return 0;
}

知识点2:

变量在内存中存放是有地址的,数组在内存中存放也同样具有地址。对于数组来说数组名就是数组在内存中存放的数组首元素地址。

指针变量用于存放变量的地址,可以指向变量,当然也可以存放数组的首地址或数组元素的地址。这就是说指针变量可以指向数组或数组元素。                                                                                                                                       

什么是数组:数组类似于数学中的集合,只不过数组里面装的是同类型的数据元素,而且数据元素之间的物理内存是连续的,而且一般也是有内存限制的,可以有重复的数据元素,是因为内存单元之间是独立的。

知识点3:

从内存的角度讲,数组就是依次分配多个变量,而且这么多个变量在内存中的存储单元是依次相连接的;我们分开定义多个变量(如:int a,b,c,d;)和一次定义一个数组(int a[4];)这两种定义方法相同点是都定义了4个int型变量,而且这4个变量都是独立的单个使用的;不同点是单独定义是a,b,c,d在内存中的地址不一定相连,但是定义成数组后,数组中的4个元素地址肯定是依次相连的。数组中多个变量虽然必须单独访问,但是因为他们地址彼此相连,因此很适合用指针来操作,因此数组和指针天生就纠结在一起,这里以int a[4]为例,它里面有四个元素,也就有四个内存单元。

知识点4:

从编译器角度来讲,数组变量也是变量,和普通变量和指针变量并没有本质不同。变量的本质就是一个地址,这个地址在编译器中决定具体位置数值,具体数值和变量名绑定,变量类型决定这个地址的延续长度

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值