工具与事理
指针与内存都是c措辞中的要点与难点
内存是一维线性排列的

我们来写一个大略的程序:
我们在函数中声明了3个变量,名字分别叫 a b c
我们打印一下这三个变量的地址,结果如下:
这三个地址都是0x开头,是16进制。
可以看出来,这三个数字逐渐减少,并且差值都为4. 也便是字长。
这当然不是有时,c措辞是故意设计成这个样子的。
如下的图可以直不雅观的表述:
指针的基本用法(初识指针)
main0.c:
上述代码无法实现a,b数值的交流。
改为指针类型实当代码如下:
main1.c:
为原来的变量值加上, change函数改为传入&a &b
3和5可以成功的交流。
int a 与 int a都是可以的,被称为指针。& 取地址符。
我们要引入工具来剖析
须要将实参的地址传到子函数才能改变实参! 如change(&a,&b)
C措辞中int未初始化时,初值为随机
int变量未初始化的默认初值,和变量的类型有关
局部变量,在未初始化情形下,初值为随机值。C规范对该初值并没有做规定,详细实现由编译器决定。如VC/VS等编译器,会将初始值值为0xCCCCCCCC,而GCC等编译器则是不可预知的随机值。
静态局部变量,即带static润色的局部变量。全局变量和静态全局变量,即定义在函数外,不属于任何一个函数的变量。这几种默认初值为0.
常见问题解答:
◆ 为什么打印地址时,我的打印结果跟上面不一样?同一个代码每次实行,地址的打印结果也不一样
由于每次代码运行过程中,变量的创建都要重新申请内存空间,每次申请的空间是『临时』的,创建时申请空间,利用完自动开释空间
感谢小伙伴的阅读,如果有不错的建议或见地,欢迎在评论区留言,喜好的话,麻烦点个赞和关注哦~~~