网站首页 > 文章精选 正文
C语言是机器亲和的,也就是说,在大多数情况下,它是要去迁就机器的。如果想学迁就人的语言,可以去学PHP,Python,Go,Java等。
工具与原理
指针与内存都是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.
常见问题解答:
◆ 为什么打印地址时,我的打印结果跟上面不一样?同一个代码每次执行,地址的打印结果也不一样
因为每次代码运行过程中,变量的创建都要重新申请内存空间,每次申请的空间是『临时』的,创建时申请空间,使用完自动释放空间
感谢小伙伴的阅读,如果有不错的建议或意见,欢迎在评论区留言,喜欢的话,麻烦点个赞和关注哦~~~
- 上一篇: C语言中函数指针的深入研究
- 下一篇: C语言指针的本质
猜你喜欢
- 2025-03-12 分析使用Spring Boot进行单元测试时,报出空指针异常
- 2025-03-12 C语言指针的强大之处
- 2025-03-12 C语言:指针(一)
- 2025-03-12 一文聊透对象在JVM中的内存布局,内存对齐和压缩指针原理及应用
- 2025-03-12 解析腕表:大三针、小三针和规范指针
- 2025-03-12 自学WPS表格14:数据输入与编辑(四)
- 2025-03-12 C++ 智能指针模板类
- 2025-03-12 C++ QT中的智能指针解释与使用
- 2025-03-12 什么是堆栈?堆栈指针的SP的作用是什么?
- 2025-03-12 C语言指针的本质
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)