![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言高级篇
林凡_123
这个作者很懒,什么都没留下…
展开
-
指针数组,数组指针,函数指针
1、指针数组的实质是数组,数组里面存的是指针变量2、数组指针实质是指针,指针指向的是一个数组如何区分他们呢,[]的结合优先级比*高int *p[5] 指针数组, p先和[]结合,是一个数组,数组里面存的都是int* 类型的指针变量,指针变量指向的是int类型的数int (*p)[5] 数组指针,p先和*结合,是一个指针,数组里面存了5个元素,元素的类型都是int类型,指针指向这个...原创 2019-02-21 15:51:52 · 90 阅读 · 0 评论 -
进程中的内存布局
1、程序被放在内存中运行,程序运行时需要存储一些临时变量。2、内存被操作系统进行管理。3、有三种内存来源:栈、堆、数据区 栈: 运行时自动分配,自动回收,不需要程序员干预。 反复使用:栈内存的大小确定,就是哪一块空间,反复使用。 脏内存:栈在每次使用后都不会去清理,每次都保留上一次的值。 临时性:函数不能返回栈变量的指针。原因是解引用的返...原创 2019-02-22 21:29:06 · 142 阅读 · 0 评论 -
代码段、数据段
1、代码段:就是程序的可执行部分,直观的认为就是堆叠的函数2、数据段:(也称为数据区,静态数据区,静态区)直观的理解就是全局变量(局部变量不属于程序的数据,属于函数的数据) 数据段: bss段:又叫做ZI(zero initial段),特点是被初始化为0的数据段。 .data段:未被初始化0的全局变量,和静态局部变量特殊的...原创 2019-02-23 14:57:59 · 5475 阅读 · 0 评论 -
const和指针变量
第一种:const int *p p是可变的,*p是不可变的第二种:int const *p p是可变的,*p是不可变的第三种:int *const p p是不可变的·,*p是可变的第四种:const int * const p p是不可变的,*p也是不可变的第五种:const int const *p p是可变的...原创 2019-02-19 15:28:45 · 162 阅读 · 0 评论 -
指针和数组的类型匹配问题
int *p;int a[5]; p = a //类型匹配int *p;int a[5];p = &a //类型不匹配a 和 &a[0]都是数组第一个元素的首地址,类型都是int *;&a是数组的首地址,是一个数组指针,类型是int (*)[5]。指针类型如何决定了指针如何参与运算? int *p ,p+1实际上是地址+siz...原创 2019-02-19 20:11:56 · 269 阅读 · 0 评论 -
指针和强制类型转换
(1)所有的类型的数都是以二进制的形式存储在内存中,不知道什么int short char等(2)char short int 等属于整型,存储的方式一样,只是内存的格子不一样而已(它们叫二进制兼容格式),而float double则不同,和整型更不同。(3)按照什么类型的存进去的按照什么类型的取出来,如果是按整型存进去,按%f取则会出现奇怪的数字。...原创 2019-02-20 12:34:12 · 454 阅读 · 0 评论 -
sizeof,strlen,函数,指针和数组之间的关系
1、sizeof是运算符,用来返回()中变量或者数据类型所占内存的字节大小。2、函数的形参如果是数组的时候,[]中的数字可有可无,传的只是一个地址过来3、结构体传参的话,c语言可以有两种,一种直接传结构体过来,另一种传jiegu结构体指针过来。传结构体指针的话,效率高。...原创 2019-02-21 12:49:05 · 268 阅读 · 0 评论