C语言
文章平均质量分 72
全貌
人生没有标准答案
展开
-
C语言-预处理指令
1.预定义符号__FILE__ //当前文件的文件名__LINE__ //文件当前的符号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义这些预定义的符号都是语言内置的举个栗子:printf("line:%d date:%s\n",__LINE__,__DATE__);可以发现我们没有定义这些符号,但它们可以原创 2022-04-14 14:31:07 · 2202 阅读 · 3 评论 -
C语言----程序环境
目录1.程序的翻译环境 和 执行环境2.详解 编译 or 链接2.1 翻译环境2.2 编译2.3 运行环境1.程序的翻译环境 和 执行环境在ANSI C的任何一种实现中,存在两种不同的环境第一种是编译环境,在这个环境中源代码被转换成可执行的机器指令第二种是执行环境,它用于实际执行代码2.详解 编译 or 链接2.1 翻译环境画张图简单了解下程序编译过程# 组成一个程序的每一个源文件通过编译过程分别转换成...原创 2022-04-08 12:53:37 · 1005 阅读 · 3 评论 -
C语言动态内存管理
1.为什么存在动态内存管理?一般开辟内存空间的时候,像开辟数组、变量时开辟的都是固定的空间 //常见的开辟内存的方式 int a = 0; //向内存申请四个字节的空间,在栈上申请 int arr[10]={0}; //向内存申请连续的十个int类型的空间,在栈上申请像上述的方式有两个特点: 1.空间开辟大小是固定的。 2.数组在声明时必须指定大小,它所需要的空间在编译时分配。这些开辟内存的方式是在编译...原创 2022-03-31 16:35:06 · 1385 阅读 · 3 评论 -
C增删查改通讯录(静态版本)
Contact.c#include"Contact.h"//初始化通讯录void InitContact(Contact* Con){ assert(Con != NULL); Con->sz = 0; memset(Con, 0, sizeof(Con));}//增加联系人void AddContact(Contact* Con){ if (Con->sz >= ContactMax) { printf("通讯录满了,无法添加联系人\n");原创 2022-03-31 06:53:19 · 474 阅读 · 0 评论 -
C语言结构体、枚举、联合体
#1.结构体在现实世界里,常常有一些复杂对象不好用简单的变量或数组去表示,这时候C语言的自定义类型:结构体,就可以帮我们很好的定义这些复杂对象。1.1 结构体是什么:结构体是一些值的集合,这些值被称为成员变量,成员变量可以是不同的类型。1.2结构体的声明:这个时候我们就声明了一个有两个char类型和一个int类型的结构体类型struct str1.3结构体的不完全声明:与上面的声明不同的是少了结构体标签,所以这个结构体类型只有一个变量s3,不可在函...原创 2022-03-26 03:01:48 · 718 阅读 · 0 评论