C语言
文章平均质量分 53
(╯▔皿▔)╯
这个作者很懒,什么都没留下…
展开
-
C语言入门
"how do you do.","CHINA","a","$123.45"“C language programming”、“a\n”、“#1“、 “”修饰全局变量时,全局变量/外部函数的作用域变小/链接属性由外部属性变成内部属性,全局变量/外部函数只能在所在的源文件中使用。(4)单撇号只是界限符,不属于字符常量中旳一部分,字符常量只能是一个字符,不包括单撇号。十六进制-0,1,2,3,4,5,6,7,8,9,0 ,A,B,C,D,E,F,--0x。//此时num为常变量,不可变,但本质是变量。原创 2024-01-20 10:33:11 · 815 阅读 · 0 评论 -
Debug Release
Debug--调试版本--有调试信息,可以调试Release--发行版本--没有调试信息,不能调试,内存占用小F9--设置断点F5--启动调试,程序执行到断点处停止--有多个逻辑断点时,继续按F5,程序就会执行到下一逻辑断点上int main()int i = 0;for (i = 0;i<99;i++)//断点设置处,按F5会跳的逻辑断点上,所以每按一次F5就会打印一次ireturn 0;F10--逐过程调试,不进入函数F11--逐语句调试,进入函数shift+F5--停止调试。原创 2023-07-15 12:21:23 · 97 阅读 · 0 评论 -
enum
enumweek{Mon =1printf(运行结果:对上面的代码稍加修改enumweek{Mon =110printf(运行结果:示例三:(对枚举变量进行赋值)enumweek{Mon =1num= (enumweek)10;printf(%d, num);原创 2023-07-15 12:20:13 · 85 阅读 · 0 评论 -
inline
内部任何调用dbtest(i)的地方都换成了(i%2>0)?”奇”:”偶”原创 2023-07-15 12:18:15 · 80 阅读 · 0 评论 -
printf的返回值
printf的返回值是打印的长度。printf的返回值。原创 2023-07-15 12:17:34 · 73 阅读 · 0 评论 -
scanf,EOF,getchar,gets,puts
3.gets会将标准输入流(stdin)中的字符串存入str中,并自动加入'\0'EOF为End Of File的缩写,在操作系统中表示资料源无更多的资料可读取。scanf和getchar都是输入函数,它们都是从键盘上来读取我们的数据,但它们。puts()函数的作用与语printf("%s\n", s)相同。(1). puts()函数只能输出字符串, 不能输出数值或进行格式变换。1. gets()函数用来从标准输入设备(键盘)读取字符串直到。(2). 可以将字符串直接写入puts()函数中。原创 2023-07-15 12:16:02 · 67 阅读 · 0 评论 -
time库函数(转载)
然后调用localtime将time_t所表示的CUT时间转换为本地时间(我们是+8区,比CUT多8个小时)并转成struct tm类型,该类型的各数据成员分别表示年月日时分秒。日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所以可以说日历时间是“相对时间”,但是无论你在哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的。原创 2023-07-15 12:04:50 · 58 阅读 · 0 评论 -
tpyedef
Typedef是起别名,define是替换。Typedef与define。此时a,b都是指针变量。原创 2023-07-15 12:03:46 · 48 阅读 · 0 评论 -
union--共用体
以上3个变量在内存中占的字节数不同,但都是从同一地址开始(图中设为1000)存放,也就是使用覆盖技术,后一个数据覆盖了前面的数据。(3)共用体变量中起作用的成员是最后一次被赋值的成员,在对共同体变量中的一个成员赋值后,原有变量存储单元中的值就被取代。当a.f = 0x61;例如:&a.i,&a.ch,&a.f都是同一值。//表示不同类型的变量i,ch,f可以存放到同一段存储单元中。//表示不同类型的变量i,ch,f可以存放到同一段存储单元中。//表示不同类型的变量i,ch,f可以存放到同一段存储单元中。原创 2023-07-15 12:00:07 · 136 阅读 · 0 评论 -
八进制和十六进制
十六进制-0,1,2,3,4,5,6,7,8,9,0 ,A,B,C,D,E,F,--0x。八进制-0,1,2,3,4,5,6,7-0。原创 2023-07-15 11:59:08 · 47 阅读 · 0 评论 -
编译——详解
二进制文件--包含在 ASCII及扩展 ASCII 字符中编写的数据或程序指令的文件。计算机文件基本上分为二种:二进制文件和 ASCII(也称纯文本文件),图形文件及文字处理程序等计算机程序都属于二进制文件。7.也可以由 hello.i 或 hello.s 生成目标文件 hello.o。5.也可以由 hello.i 文件生成 hello.s 汇编文件。6.只执行预处理、编译和汇编,输出 hello.o 目标文件。4.只执行预处理和编译,输出 hello.s 汇编文件。Object file--目标文件--原创 2023-07-15 11:58:27 · 57 阅读 · 0 评论 -
编译——初识
二进制文件--包含在 ASCII及扩展 ASCII 字符中编写的数据或程序指令的文件。库文件是计算机上的一类文件,提供给使用者一些开箱即用的变量、函数或类。7.也可以由 hello.i 或 hello.s 生成目标文件 hello.o。5.也可以由 hello.i 文件生成 hello.s 汇编文件。6.只执行预处理、编译和汇编,输出 hello.o 目标文件。4.只执行预处理和编译,输出 hello.s 汇编文件。1.编译 hello.c,默认输出 a.out。Object file--目标文件--原创 2024-01-20 10:33:47 · 311 阅读 · 0 评论 -
C语言变量
全局变量不初始化,默认是0。原创 2023-07-14 10:33:07 · 37 阅读 · 0 评论 -
操作符详解
case1:判断语句的括号内加逗号的表达式属于逗号表达式,逗号表达式的规则是从左往右依次执行语句,并返回最后一个语句的结果,如果计算到最后的表达式的值为真,则整个逗号表达式为真,否则为否。位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果。case2:逗号表达式用于赋值,从左往右依次执行,整个表达式的结果是最后一个表达式的结果。s=a+5 s在赋值表达式的左边,a+5降精度为char(隐式转化)先把p赋值给num,p再加一。原创 2023-07-14 10:31:51 · 43 阅读 · 0 评论 -
C语言——错题
有符号数转换为无符号数 :看有符号数的最高位(符号位)是否为1,如果不为1(即为0,是正数),则无符号数就直接等于有符号数;4.如果有符号数的最高位为1,则将有符号数取补码,得到的数就是无符号数。(将补码的符号位转换为有效位)无符号数转换为有符号数:看无符号数的最高位是否为1,如果不为1(即为0),则有符号数就直接等于无符号数;如果无符号数的最高位为1,则将无符号数取补码,得到的数就是有符号数。(将补码的最高位有效位转换为符号位)2.设int x = 11;i会转换为无符号数,在与sizeof(i)比较。原创 2023-07-14 10:28:40 · 44 阅读 · 0 评论 -
动态内存分配
- 指针指向一个要重新分配内存的内存块,该内存块之前是通过调用 malloc、calloc 或 realloc 进行分配内存的。如果为空指针,则会分配一个新的内存块,且函数返回一个指向它的指针。如果大小为 0,且 ptr 指向一个已存在的内存块,则 ptr 所指向的内存块会被释放,并返回一个空指针。开辟一块满足需求的空间,并且原来的内存中的数据拷贝回来,释放旧的内存空间,最后返回新开辟的内存空间的首地址。如果p指向的空间之后没有足够的内存空间可以追加,则realloc函数会重新找一个新的内存区域。原创 2023-07-14 10:27:18 · 40 阅读 · 0 评论 -
逗号表达式
括号内加逗号的表达式属于逗号表达式,逗号表达式的规则是从左往右依次执行语句,并返回最后一个语句的结果,如果计算到最后的表达式的值为真,则整个逗号表达式为真,否则为否。原创 2023-07-14 10:26:41 · 36 阅读 · 0 评论 -
二分查找法
二分查找法。原创 2023-07-14 10:25:55 · 34 阅读 · 0 评论 -
C语言——函数
在返回类型为 void 的函数中,return 返回语句不是必需的,隐式的 return 发生在函数的最后一个语句完成时。实参可以是常量,变量,表达式,函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传递给形参。一般地,我们将函数声明放在.h文件中,函数实践放在.c文件中,在另一.c文件中#include".h"(自己创造的.h文件),就可以使用自己创造的函数了。主调函数中调用一个函数时,函数名后面括号中的参数称为实际参数(简称实参),即实参出现在主调函数中。原创 2023-07-14 10:23:52 · 40 阅读 · 0 评论 -
函数的递归
递归常见的错误:Stack overflow(栈溢出)*函数调用都要在栈区申请空间。原创 2023-07-14 10:20:58 · 41 阅读 · 0 评论 -
宏——初识
你无法再次使用 #define 命令重新定义一个已经被定义为宏的标识符,除非重新定义所使用的替换文本与已经被定义的替换文本完全相同。如果该宏具有形参,重新定义的形参名称也必须与已定义形参名称的一样。如果想改变一个宏的内容,必须首先使用下面的命令取消现在的定义:#undef 宏名称执行上面的命令之后,标识符“宏名称”可以再次在新的宏定义中使用。如果上面指定的标识符并非一个已定义的宏名称,那么预处理器会忽略这个 #undef 命令。标准库中的多个函数名称也被定义成了宏。原创 2023-07-14 10:17:01 · 54 阅读 · 0 评论 -
初识结构体
注意:(void*)&s1 == (void*)s1.name是地址相等,&s1 和 s1.name 是不同类型指针。函数传参的时候,传参是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销比较大,所以会导致性能的下降。整体赋值仅限于定义结构体变量的时候,在使用过程中只能对成员逐一赋值,这和数组的赋值非常类似。解引用得到变量(s1)/变量(s1),将所有s1成员值赋予对应s2,s3成员。s1.name找到s1中name[10]的首地址。结论:结构体传参的时候,要传结构体的地址。原创 2023-07-13 12:03:22 · 39 阅读 · 0 评论 -
结构体进阶
1) 当相邻成员的类型相同时,如果它们的位宽之和小于类型的 sizeof 大小,那么后面的成员紧邻前一个成员存储,直到不能容纳为止;如果它们的位宽之和大于类型的 sizeof 大小,那么后面的成员将从新的存储单元开始存储。4.如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。3.包含柔性数组成员的结构体malloc()函数进行内存的动态分配,并且分配的内存应该大于结构体的大小,以适应柔性数组的预期大小。原创 2023-07-13 12:00:25 · 64 阅读 · 0 评论 -
局部变量的三种类型auto,static和register
局部变量的三种类型auto,static和register一:auto类型的变量auto类型的变量也称作自动型变量,自动型变量是在动态存储去内分配单元,函数返回的时候,编译系统会释放这些存储单元,就是说当函数调用结束后,自动类型变量就会不复存在。在c语言中我们可能很少见到auto这个关键字,原因是当我们没有显式(例如static int i=0;)的指定局部变量的存储类型的时候,系统就会默认变量是自动型变量,所以我们根本不用去原创 2023-07-13 11:58:37 · 584 阅读 · 0 评论 -
逻辑短路详解
例子:1101副作用。原创 2023-07-13 11:54:30 · 42 阅读 · 0 评论 -
认识strerror--#include<string.h>
返回值和参数:char * strerror ( int errnum );该函数的参数就是一个错误码,输入该错误码后,经函数内部处理,将该错误码转化成一条错误信息(类型是字符串)并将该错误信息(字符串)的地址返回。该代码中,FILE是一种代表“文件”的数据类型,fopen是一个功能为打开文件/文件夹的函数,参数是由文件夹名所构成的字符串(的地址),还有打开的方式对应字符串。在C语言中有一条全局的错误码errno,在程序运行过程中,只要库函数调用失败,我们就会把此处产生的错误码放入变量errno中。原创 2023-07-13 11:52:33 · 55 阅读 · 0 评论 -
实数比较初识
fabs(x-y)--取(x-y)的绝对值--math.h--1e-7--10^-7(但是C语言不能用^表示次方)原创 2023-07-13 11:42:40 · 39 阅读 · 0 评论 -
数据的存储
先使用高地址处的空间。再使用低地址处的空间。原创 2023-07-07 12:02:42 · 35 阅读 · 0 评论 -
C语言——数组
2.二维数组的初始化: int arr[3][4]={1,2,3,4,5,}Ps:一维数组以int arr[]/int* arr为形参,效果一样,1.二维数组的创建:int arr[3][4] 3行4列。m--首元素的地址--&m[0]--整个第0行数组的地址。arr[1],arr[2],arr[3]相当于一维数组。m[0]--一维数组--表示m[0]数组首元素的地址。*m--整个第0行数组--第0行数组的首元素的地址。4.arr+1表示arr[1]的地址。&m[0]--整个m[0]数组的地址。原创 2023-07-07 11:58:46 · 61 阅读 · 0 评论 -
杨辉三角的实现
杨辉三角#include<stdio.h>void print_yanghui(int n);void nextline(int prev_line[], int line_no);int main() {int n = 5;print_yanghui(n);return 0;}void print_yanghui(int n){int line[n];for (int i=1;i<=n;i++原创 2023-07-07 11:47:23 · 37 阅读 · 0 评论 -
C语言——隐式转化
题中的a,b要进行整形提升,但是c不需要整形提升a,b整形提升之后,变成了负数,所以表达式a == 0xb6 , b == 0xb600 的结果是假,但是c不发生整形提升,则表达式c == 0xb6000000的结果是真.表达式的整型运算要在CPU的相应运算器件内执行,CPU内整型运算器(ALU)的操作数的字节长度一般就是int的字节长度,同时也是CPU的通用寄存器的长度。如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的转换为另一个操作数的类型,否则操作就无法进行。,以保证精度不降低。原创 2023-07-07 11:41:53 · 1159 阅读 · 0 评论 -
c语言占位符
对应输出小写字母十六进制数;输出,并且右对齐方式输出。输出,并且右对齐方式输出。是一个整数,输出结果四舍五入后保留。对应输出大写字母的十六进制数,输出无符号十进制,通常和。位,则会在这个数的左边。位,则会在这个数的左边。输出单精度浮点数,常与。输出双精度浮点数,常与。是一个整数,按照宽度。是一个整数,按照宽度。原创 2023-07-07 11:40:51 · 516 阅读 · 0 评论 -
c语言——指针
C语言原创 2023-07-07 11:43:26 · 43 阅读 · 0 评论 -
c语言——指针进阶
指针进阶原创 2023-07-06 12:03:12 · 85 阅读 · 0 评论 -
字典序的详解
字典序原创 2023-07-06 12:01:25 · 4622 阅读 · 0 评论