摘要:
目录:一、高级指针二、malloc函数三、calloc函数四、realloc函数回到顶部一、高级指针1 堆内存的动态内存分配。内存分为:栈区(变量)、代码区(字符串)、全局区(全局变量)、堆区(自己创建,自己回收,变量,字符串)2 为了从堆中动态分配内存,要指定字节个数的空间,返回首地址,如果失败,返回NULL(空)包含头文件stdlib.h,基本的内存操作都写好了。3 malloc函数,从堆中分配指定的字节个数的空间,返回首地址,失败返回NULL4 calloc函数,从堆中分配指定的字节个数的空间,把所分配的空间所有字节都清零,返回首地址,失败返回NULL5 realloc函数,可以调整已经 阅读全文
摘要:
目录:一、大型软件开发二、头文件和static三、结构体四、联合五、枚举回到顶部一、大型软件开发将一个代码中的内容,拆分成多个文件,最后的可执行文件只要一个。操作步骤:1 原来只有一个文件main.c输入函数 输出函数 声明2 多人开发 将原文件拆成三个文件,分别为*.h、*c、main.c3 编译时1)分别编译不同的源文件,生成相应的目标文件gcc -c input.cgcc -c main.c2)可以将多个目标文件链接生成同一个可执行文件gcc input.o main.o => a.out3)在main.c中,引入头文件4).h文件中的条件编译解决的是重复声明问题5)先xcode中 阅读全文
摘要:
目录:一、宏定义二、#x,##x使用和预定义宏三、宏的高级使用(条件编译)回到顶部一、宏定义1 宏是常用的预处理功能之一,是在编译之前进行宏替换,即将宏名替换成所定义的宏体。2 优点:可以使代码更简单,更容易,避免大量使用。3 宏定义定义在函数外面;格式:#define PI 3.14PI为宏的文件内容在编译前将PI的内容替换成3.144 宏与全局变量的区别宏相当于字符串的替换操作,内存中不存在全局变量在内存中是存在的。相同点:通常定义一个全局变量加上const修饰符,全局变量的值是不可以修改的。5 宏函数#define MianJi(r) PI*r*r宏函数只是文本,只是相当于做了内容替换的 阅读全文
摘要:
目录:一、C语言字符串函数库二、用命令行输入参数回到顶部一、C语言字符串函数库1 #include 2 字符串复制strcpy(参数1,参数2);参数1:目标字符串位置(复制到哪里)参数2:源字符串(来源)3 字符串拼接函数strcat(参数1,参数2);参数1:第一个字符串参数2:第二个字符串将第一个字符串的内容与第二个字符串的内容拼接在一起,保存在第一个字符串中。4 字符串长度strlen(str);参数为字符串,返回字符串长度,不包含结束符。5 字符串比较函数strcmp(参数1,参数2);根据ASCII码表来比较字符串中每一个字符是否相等,结果为两个字符串的差值,差值为0,字符串相等, 阅读全文
摘要:
目录:一、字符串二、字符串输入输出函数三、指针数组(字符串数组)回到顶部一、字符串1 一组字符数组,以数组的首地址开始,以ASC码的'\0'结束。2 字符串与普通数组的区别:普通数组没有结束标识,而字符串是有的。3 字符串的定义方式:字面值:"hello"使用字符数组定义字符串:char str[10] = {''a,'b','\0'};使用字符指针:char* str = "hello";4 字符串创建方式的不同声明的变量数组是放在内存中的栈区。字面值创建的字符在内存代码区。如果创建的字符 阅读全文
摘要:
目录:一、指针二、指针与数组回到顶部一、指针1 内存被分为字节,每个字节有唯一地址,指针保存的是内存中的地址。2 保存指针的变量,就叫指针变量,(保存地址)3 声明一个指针变量int i = 0;int* p;//声明一个指针变量 int*指针类型int * p; int* p; int *p;//这几种写法都行4 每个指针变量能指向一种特定类型的对象。5 指针是引用数据类型,因为本身没有保存最终数据,只是保存了数据的地址,间接的找到内存中的数据。6 指针的用法指针可用于参数,传递变量的地址,相当于多个函数共享内存地址(内存空间)。7 值传递:相当于不同变量,指向不同区域地址传递:相当于同一变 阅读全文