![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言进阶
「已注销」
这个作者很懒,什么都没留下…
展开
-
c语言进阶——数据类型本质分析
数组做函数参数的退回问题当数组做函数形参时,数组会退回为一个指针变量 下面用一个例子给出一个简单的证明void sortArray(int a[], int num){ int i, j, tmp; int num2 = 0; num2 = sizeof(a)/sizeof(a[0]); printf("num2:%d \n", num2); ...原创 2018-05-27 16:56:45 · 201 阅读 · 0 评论 -
c语言进阶——多级指针内存模型
多级指针内存模型(以三级指针为例)指针的最大作用:间接赋值 推论:n级指针形参可以间接改变n-1及指针实参的值 三级指针作用:通过函数参数来为二级指针分配内存,间接赋值,回收内存//为二级指针分配内存 int getMem(char ***p3 , int num){ int i = 0; char **tmp = NULL; if (p3 == NU...原创 2018-06-08 15:17:45 · 292 阅读 · 0 评论 -
c语言进阶——二级指针内存模型
二级指针输出模型//指针做输出:被调用函数分配内存//指针做输入:主调用函数分配内存//求文件中的两段话的长度int getMem(char **myp1, int *mylen1, char **myp2, int *mylen2){ char *tmp1 = NULL; char *tmp2 = NULL; tmp1 = (char *)malloc(1...原创 2018-06-08 14:58:28 · 246 阅读 · 0 评论 -
c语言进阶——字符串和一级指针内存模型
字符串基本操作在C语言中使用字符数组来模拟字符串C语言中的字符串是以’\0’结束的字符数组C语言中的字符串可以分配于栈空间,堆空间或者只读存储区1、字符数组初始化 //1 指定长度初始化 char buf2[100] = {'a', 'b', 'c', 'd'}; //如果初始化的个数大于内存的个数 编译错误 //后面的buf2[4]-b...原创 2018-06-07 16:05:24 · 221 阅读 · 0 评论 -
c语言进阶——指针概述
指针是一种数据类型1、指针也是一种变量,占有内存空间,保存内存地址2、*p操作内存在指针声明时,*号表示所声明的变量为指针在指针使用时,*号表示操作指针所指向的内存空间中的值*p相当于通过地址(p变量的值)找到一块内存;然后操作内存*p放在等号的左边赋值(给内存赋值)*p放在等号的右边取值(从内存获取值)3、指针变量和它指向的内存块是两个不同的概念给p赋值p=&a...原创 2018-05-31 15:09:49 · 684 阅读 · 0 评论 -
c语言进阶——文件读写
文件的打开fopen()文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了。当使用打开函数时,必须给出文件名、文件操作方式(读、写或读写),如果该文件名不存在,就意味着建立(只对写文件而言,对读文件则出错),并将文件指针指向文件开头。若已有一个同名文件存在,则删除该文件,若无同名文件,则...原创 2018-06-21 17:05:34 · 393 阅读 · 0 评论 -
c语言进阶——结构体专题
结构体类型定义及变量定义1、定义结构体类型变量的三种方式//用类型定义变量的方法3种//第一种:定义类型的同时定义变量struct Student{ char name[64]; int age;}s1, s2;//第二种:使用结构体类型定义变量typedef struct Student{ char name[64]; int age;...原创 2018-06-21 09:30:06 · 289 阅读 · 0 评论 -
c语言进阶——函数调用模型
函数调用模型分析fb在栈上分配的内存空间,不能被fa和main使用fb在堆上分配的内存空间,可以被fa和main使用fb在静态、全局区分配的内存空间可以被fa和main使用...原创 2018-05-30 10:41:11 · 429 阅读 · 0 评论 -
c语言进阶——程序的内存四区
内存四区的建立流程流程说明 1. 操作系统把物理硬盘代码load到内存 2. 操作系统把c代码分成四个区 3. 操作系统找到main函数入口执行内存四区元素分析静态存储区理解char * getStr1(){ char *p1 = "abcdefg2"; return p1;}char *getStr2(){ char *p2...原创 2018-05-30 10:07:16 · 322 阅读 · 0 评论 -
c语言进阶——多维数组本质及指针数组的应用分析
多维数组的本质一维数组int a[10]在做函数参数时会退化为指针int *a,但是二维指针做函数参数时却不能写成二级指针,那么二维数组的本质到底是什么,可以通过代码来验证。 int a[3][5], i=0, j=0;//定义一个3*5的二维数组 int tmp = 1; for (i=0; i<3; i++) { for (j...原创 2018-06-12 15:00:13 · 303 阅读 · 0 评论 -
c语言进阶——变量本质分析
变量本质分析变量的本质是一段连续内存空间的别名,程序通过变量来申请和命名内存空间。可以把变量理解为访问 内存的“门牌号”,对变量进行读写操作并不是往变量中读写数据,而是通过变量这个“门牌号”来操作内存。修改变量的几种方法直接修改间接修改(通过内存地址进行修改)——指针的产生 int a; //直接赋值 a = 10; //a的地址为1...原创 2018-05-27 17:24:43 · 202 阅读 · 0 评论 -
c语言进阶——数组类型与数组指针
数组基本概念元素类型角度:数组是相同类型的变量的有序集合 内存角度:连续的一大片内存空间数组的初始化//数组元素的个数可以显式或隐式指定//数组初始化可以使用{0}或memeset两种方式 void main(){ int a[] = {1, 2}; //隐式指定元素个数 int b[100] = {1, 3};//显式指定元素个数 in...原创 2018-06-10 11:59:05 · 217 阅读 · 0 评论