C语言基础学习
基础的C语言知识,这里会记录一些当初学习的薄弱点和易混淆点。
琰婧
努力学习。
展开
-
C++ 调用C语言文件 使用extern “C“
C++去调用C语言的文件。C语言和C++对函数的链接方式不同,所以需要以下操作。我们仅需要在C语言文件对应的头文件加入#ifdef __cplusplusextern "C"{#endif//-----------------------------------// 函数声明和变量等//----------------------------------#ifdef __cplusplus}#endif...原创 2021-02-18 19:07:35 · 164 阅读 · 0 评论 -
C/C++学习之文件操作
C/C++学习之文件操作1、系统文件2、文件指针和普通指针区别3、文件分类4、文件操作一般步骤5、打开、关闭文件函数6、文件访问路径7、按字符写文件 fputc8、按字符读文件 fgetc9、feof()函数10、fgets()函数11、fputs()函数练习1:获取用户键盘输入,写入文件。练习2: 文件版四则运算12、printf --- sprintf --- fprintf13、scanf --- sscanf --- fscanf14、fwrite()15、fread()函数1、系统文件读写文件原创 2021-01-11 23:03:32 · 146 阅读 · 0 评论 -
C/C++学习之复合类型(结构体、枚举等)
C/C++学习之复合类型1、结构体定义及赋值1.1、复合类型在内存中存放的模型1.2、定义结构体格式1.3、在主函数中结构体表述格式1.4、赋值方式1.4.1、按照结构顺序赋值1.4.2、赋值方式21.4.3、赋值方式31.4.4 赋值方式41.2、结构体大小和内存结构1.2.1、结构体大小1.2.2、内存结构模型图1、结构体定义及赋值1.1、复合类型在内存中存放的模型1.2、定义结构体格式struct 结构体名称{结构体成员列表} ; 分号结尾1.3、在主函数中结构体表述格式定义原创 2021-01-11 12:28:06 · 377 阅读 · 0 评论 -
C/C++学习之内存
C/C++学习之内存1、变量1.1、局部变量1.2、全局变量1.3、static全局变量1.4、static局部变量2、函数2.1、全局函数2.2、static函数3、内存4区模型(代码段、数据段、stack、heap)4、生命周期5、heap 空间5.1、开辟释放 heap 空间5.2、使用 heap 空间5.3、二级指针对应的 heap空间1、变量1.1、局部变量概念:定义在函数 内 部的变量。作用域:从定义位置开始,到包裹该变量的第一个右大括号结束。1.2、全局变量概念:定义在函数外部原创 2021-01-09 23:20:13 · 254 阅读 · 0 评论 -
C/C++学习之main函数
C/C++学习之main函数1 无参main函数2 带参的main函数1 无参main函数int main(void) == int main()2 带参的main函数int main(int argc, char *argv[]) == int main(int argc, char **argv)参1:表示给main函数传递的参数的总个数。参2:是一个数组!数组的每一个元素都是字符串 char * 测试1: 命令行中的中,使用gcc编译生成 可执行文件,如: test.exetes原创 2021-01-07 22:59:23 · 282 阅读 · 0 评论 -
C/C++学习之指针和字符串
C/C++学习之指针和字符串1 指针和字符串1 指针和字符串1) char str1[] = {'h', 'i', '\0'}; 变量,可读可写 char str2[] = "hi"; 变量,可读可写 char *str3 = "hi"; 常量,只读 str3变量中,存储的是字符串常量“hi”中首个字符‘h’的地址值。 str3[1] = 'H'; // 错误!! char *str4 = {'h', 'i', '\0'}; // 错误!!!2) 当字原创 2021-01-07 22:56:55 · 314 阅读 · 0 评论 -
C/C++学习之指针基础
C/C++学习之指针1 任意“指针”类型大小2 野指针3 空指针4 万能指针/泛型指针(void *)5 指针和数组1 任意“指针”类型大小指针的大小与类型 无关。 只与当前使用的平台架构有关。 32位:4字节。 64位: 8字节。2 野指针1) 没有一个有效的地址空间的指针。 int *p; *p = 1000; 需要注意,下面这种方法是对的,因为分配的地址不是无效的,而是str的地址: int str = 2; int* p; p = &str;2)p原创 2021-01-07 20:06:31 · 135 阅读 · 0 评论 -
C/C++学习之数组知识
C/C++学习之数组知识1 数组大小2 地址合一1 数组大小数组大小: sizeof(arr);一行大小: sizeof(arr[0]): 二维数组的一行,就是一个一维数组。一个元素大小:sizeof(arr[0][0]) 单位:字节行数:row = sizeof(arr)/ sizeof(arr[0])列数:col = sizeof(arr[0])/ sizeof(arr[0][0])2 地址合一printf("%p\n", arr); == printf("%p\n", &a原创 2021-01-07 14:27:25 · 82 阅读 · 0 评论 -
C/C++学习之字符串
C/C++学习之字符串1 字符串与字符数组的区别1.2 练习:键盘输入字符串,统计每个字母出现的次数2 字符串获取 scanf函数3 字符串操作函数3.1 gets()3.2 fgets()3.3 puts()3.4 fputs3.5 strlen1 字符串与字符数组的区别字符数组 和 字符串区别:字符数组: char str[5] = {'h', 'e', 'l', 'l', 'o'}; 字符串: char str[6] = {'h', 'e', 'l', 'l', 'o', '\0'};原创 2021-01-07 11:57:34 · 165 阅读 · 0 评论 -
C/C++学习之gcc编译的4步骤
gcc编译的4步骤1 预处理2 预处理3 汇编4 链接1 预处理预处理 -E xxx.i 预处理文件gcc -E xxx.c -o xxx.i头文件展开。 — 不检查语法错误。 可以展开任意文件。宏定义替换。 — 将宏名替换为宏值。替换注释。 — 变成空行展开条件编译 — 根据条件来展开指令。2 预处理编译 -S xxx.s 汇编文件gcc -S hello.i -o hello.s逐行检查语法错误。【重点】 — 整个编译4步骤中最耗时的过程。将C程序翻译成 汇编指令,原创 2020-12-23 22:41:37 · 191 阅读 · 0 评论