C和指针(第三章)

本文探讨了C语言中数据的存储区域,包括栈区、堆区、全局区、静态区和常量存储区,以及它们的特点。同时,讲解了char和字符串之间的微妙关系,以及指针在不同情况下的使用。此外,还介绍了作用域的概念,包括文件作用域、函数作用域、代码块作用域和原型作用域。最后,简述了链接属性的内部、外部和无链接属性的区别。
摘要由CSDN通过智能技术生成

(一)看了半天,觉得最有价值的地方莫过于是数据的存储字符类型和指针之间的混沌关系
#数据存储:
1.1栈区:编译器在需要的时候分配,不需要的时候回收(一般变量的生命周期到外面的"}"为止),它的内存空间相对于堆来说,要小很多(比如申请int A[10000000000000],编译器就会报错),但是好在执行效率高,因为malloc/new都是要通过复杂的算法才可以申请到空间,花费了一定的时间,更不用说还有delete/free了
1.2堆区:堆并不是一无是处,相反,它拥有较大的内存空间,相对栈来说可以存储大量数据
1.3全局区,静态区:全局变量和静态局部变量都放在这里,带到程序结束时,一同释放
1.4常量储存区:顾名思义,这里储存不允许修改的常量,数据,字符串,指针等等,程序结束时释放
1.5程序代码区存放二进制函数代码

#char和字符串(常量)之间~~“难以理解♂”~~ 的关系
char
和char[]之间的区别,超过你的想象
前者是定义一个char的指针你比如:

char* a="hello world";
a[0]='H'

就会报错,提示为:不可以被written,因为char* a只是个指针,他不知道这个长度有多大,但是如果这样写:

char a[]="hello world";
a[0]="H"

就没有任何问题,这是常规操作
如果这样写:

char a[]="hello world";
char *A=a;
A[0]="H"  //知道了大小后,访问就不存在问题了,编译通过

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shallow_Carl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值