
C语言
m0_37633929
这个作者很懒,什么都没留下…
展开
-
C语言中的数组参数会退化为指针
一:C语言中只会以值拷贝的方式传递参数,当向函数传递数组时—— 将整个数组拷贝一份传入函数(X)—— 将数组名看做常量指针传数组首元素地址C语言以高效作为最初设计目标:a) 参数传递的时候如果拷贝整个数组执行效率将大大降低b) 参数位于栈上,太大的数组拷贝将导致栈溢出二:A、二维数组同样存在退化的问题—— 二维数组可以看做是一维数组—— 二维数组...原创 2019-12-13 12:50:15 · 279 阅读 · 0 评论 -
C语言中的指针数组
一:指针数组是一个普通的数组指针数组中的每个元素为一个指针指针数组的定义:type* pArray[n];type* 为数组中每个元素的类型pArray 为数组名n为数组大小二:三:小结数组的类型由元素类型和数组大小共同决定数组指针是一个指针,指向对应类型的数组指针数组是一个数组,其中每个元素都是指针数组指针遵循指针运算规则...原创 2019-12-09 00:29:42 · 330 阅读 · 0 评论 -
C语言中的数组指针
一:C语言中的数组有自己特定的类型数组的类型由元素类型和数组大小共同决定例如: int array[5] 的类型为 int [5]二:定义数组类型C语言中通过typedef为数组类型重命名typedef type(name)[size];—— 数组类型typedef int(AINT5)[5];typedef float(AFLOAT10)[10];...原创 2019-12-09 00:10:26 · 442 阅读 · 1 评论 -
C语言中的字符串典型问题
一:二:snprintf函数本身是可变参数函数,原型如下:int snprintf(char* buffer, int buf_size, const char* format, ...);当函数只有3个参数时,如果第三个参数没有包含格式化信息,函数调用没有问题;相反,如果第三个参数包含了格式化信息,但缺少后续对应参数,则程序行为不确定。注:格式化信息必须与变...原创 2019-12-08 21:15:41 · 199 阅读 · 0 评论 -
C语言中的字符串
一:字符串是有序字符的集合字符串是程序中的基本元素之一C语言中没有字符串的概念—— C语言中通过特殊的字符数组模拟字符串—— C语言中的字符串是以 \0 结尾的字符数组二:字符串与字符数组:在C语言中,双引号引用的单个或多个字符是一种特殊的字面量—— 存储于程序的全局只读存储区—— 本质为字符数组,编译器自动在结尾加上 \0 字符三:字符...原创 2019-12-08 20:25:39 · 157 阅读 · 0 评论 -
C语言中的##运算符
一:## 运算符用于在预处理期粘连两个标识符##的连接作用是在预处理期完成的,因此只在宏定义中有效编译器不知道 ## 的连接作用用法:#define CONNECT(a,b) a##bin CONNECT(a,1); //int a1;a1 = 2;二:#include <stdio.h>#define NAME(n) name##n...原创 2019-12-05 01:22:06 · 626 阅读 · 0 评论 -
C语言中的编译器
一:二:三:预编译(主要是一些文本处理):—— 处理所有的注释,以空格代替—— 将所有的#define 删除,并且展开所有的宏定义—— 处理条件编译指令#if, #elif, #else ,#endif—— 处理#include, 展开被包含的文件—— 保留编译器需要使用的#pragma指令预处理指令示例: gcc...原创 2019-12-03 12:47:35 · 183 阅读 · 0 评论 -
C语言中的typedef
一:typedef 用于给一个已经存在的数据类型重命名typedef 本质上不能产生新的类型typedef重命名的类型: —— 可以在typedef语句之后定义 —— 不能被unsigned 和 signed修饰用法: typedef type new_name;二:#include <stdio.h>t...原创 2019-12-03 00:59:08 · 141 阅读 · 0 评论 -
C语言中的sizeof
一:sizeof是编译器的内置指示符(不是函数)sizeof用于计算类型或变量所占的内存大小sizeof的值在编译期就已经确定sizeof用于类型: sizeof(type)sizeof用于变量:sizeof(var) 或 sizeof var————————————int var = 0;printf("%d\n", sizeof(int));printf(...原创 2019-12-03 00:46:31 · 245 阅读 · 0 评论 -
C语言中的enum
一:enum是C语言中的一种自定义类型enum值可以根据需要自定义的整型值第一个定义的enum值默认为0默认情况下的enum值是在前一个定义值的基础上加1enum类型的变量只能取定义时的离散值example: ———————————————————————— enum Color ...原创 2019-12-03 00:26:25 · 1907 阅读 · 0 评论 -
C语言中的union
一:C语言中的union在语法上与struct相似union只分配最大成员的空间,所有成员共享这个空间example:—————————————————————————————————————————————— struct A { ...原创 2019-12-02 02:00:09 · 294 阅读 · 0 评论 -
C语言中的struct分析
一:C语言中的struct可以看作变量的集合example:——————————————————————————————空结构体占多大内存?struct TS ----------------------------------> sizeof(struct TS) = ?{};—————————————————...原创 2019-12-02 01:34:49 · 195 阅读 · 0 评论 -
volatile分析
一:volatile 可理解为“编译警告指示字”volatile告诉编译器必须每次去内存中取变量值volatile主要修饰可能被多个线程访问的变量volatile也可以修饰可能被未知因数改变的变量注:———————————————————————————————————————————— int obj = 10; ...原创 2019-12-02 00:31:14 · 148 阅读 · 0 评论 -
const分析
一:const只读变量—— const修饰的变量是只读的,本质还是变量—— const修饰的局部变量在栈上分配空间—— const修饰的全局变量在全局数据区分配空间—— const只在编译期有用,在运行期无用注:———————————————————————————————————const修饰的变量不是真的常量,它只是告诉编译器该变量不能出现在赋值符号的左边在现代...原创 2019-12-02 00:13:41 · 168 阅读 · 0 评论 -
void可以用来定义void类型的指针
一:不存在void变量—— c语言没有定义void究竟是多大内存的别名(没有void的标尺,无法在内存中裁剪出void对应的变量)二:—— ANSI C: 标准C语言规范—— 扩展C:在ANSI C的基础上进行了扩充上述代码在ASNI C编译器中无法编译通过,但对于支持GUN标准的gcc编译器而言是合法的三:void类型的指针没有编译报错四:...原创 2019-12-01 22:02:50 · 940 阅读 · 0 评论