
C语言
C语言
一株禾
这个作者很懒,什么都没留下…
展开
-
【C语言】const char * 、char const *、 char * const 三者的区别
文章目录1、const char* ptr;2、char const* ptr3、char* const ptr1、const char* ptr;定义一个指向字符常量的指针,ptr是一个指向 char* 类型的常量*ptr的值为const,不能修改。ptr的值不为const,可以修改。2、char const* ptr等价const char *3、char* const p...原创 2020-02-11 16:37:18 · 1839 阅读 · 0 评论 -
【C语言】二级指针的用法
文章目录1 、二级指针一般在传参时使用1 、二级指针一般在传参时使用将形如1234abcd这样的字符串,分别提取整数1234和字符串abcd#include <stdio.h>#include <ctype.h>int str2int(const char* str,const char** p){ int r=0; whil...原创 2020-02-11 16:25:57 · 961 阅读 · 0 评论 -
【C语言】运行程序时传参
文章目录argc:传参的个数argv: 每个字符串的首地址#include <stdio.h>int main(int argc,char* argv[]){ printf("argc=%d\n",argc); int i; for(i=0;i<argc;i++) printf("%...原创 2020-02-05 12:17:18 · 1001 阅读 · 0 评论 -
【C语言】指针
文章目录1 、悬空指针2、野指针3、一个语句定义两个指针4、交换两个数的值4.1、值传递(一)4.2、值传递(二)4.3、地址传递5、数组和指针做为形参5.1、数组做为形参5.2、指针做为形参1 、悬空指针悬空指针是指针最初指向的内存已经被释放了的一种指针。如:char* func(){ char a='#'; return &a; //返回...原创 2020-01-15 22:50:19 · 149 阅读 · 0 评论 -
【C语言】预处理器
文章目录1、什么是预处理器2、预处理器指令3、预处理器实例4、预定义宏5、预处理器运算符5.1、宏延续运算符(\)5.2、字符串常量化运算符(#)5.3、标记粘贴运算符(##)5.4、参数化的宏6、gcc编译器查看替换后的编码7、头文件相互包含导致的重定义错误1、什么是预处理器预处理器是在真正的编译开始之前由编译器调用的独立程序。预处理器可以删除注释、包含其他文件以及执行宏(宏macro是...原创 2020-01-08 22:52:34 · 766 阅读 · 0 评论 -
【C语言】函数传参
文章目录1、函数参数传递的三种方式1.1、值传递1.2、引用传递1.3、地址传递2、传递结构体3、传递数组3.1、数组做为参数传递3.2、不允许将数组做为返回值4、形参为空5、不定长参数表1、函数参数传递的三种方式1.1、值传递1.2、引用传递1.3、地址传递2、传递结构体3、传递数组3.1、数组做为参数传递数组做为函数的参数需要传递两个参数数组的地址数组的元素个数...原创 2020-01-07 20:13:50 · 2989 阅读 · 1 评论 -
【C语言】volatile变量
文章目录1、volatile的作用2、使用场景3、volatile1、volatile的作用volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。例如:int a=1;编译器的优化:在线程内,当读取一个变量时,为提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中;以后再取变量值时,就直接从寄存器中取值;当变量值在本线程里改变时,...原创 2020-01-05 00:53:29 · 1277 阅读 · 0 评论 -
【C语言】寄存器变量
文章目录1、寄存器变量2、寄存器变量速度测试1、寄存器变量在程序运行时,根据需要到内存中相应的存储单元中调用,如果一个变量在程序中频繁使用,例如循环变量,那么,系统就必须多次访问内存中的该单元,影响程序的执行效率。因此,C语言\C++语言还定义了一种变量,不是保存在内存上,而是直接存储在CPU中的寄存器中,这种变量称为寄存器变量。register int i=100;C编译程序会自动...原创 2020-01-05 00:27:48 · 5783 阅读 · 0 评论 -
【C语言】全局变量
文章目录1、多个文件中使用全局变量2、本文件中使用的全局变量3、所有文件中都可访问的全局函数4、本文件中使用的全局函数1、多个文件中使用全局变量例:a.c中定义全局变量int a=100b.c中使用a.c中定义的全局变量#include <stdio.h>extern int a; //声明全局变量已在其它地方进行了定义int main(){ ...原创 2020-01-04 23:33:31 · 11742 阅读 · 0 评论 -
【C语言的坑】:函数返回局部变量
文章目录1、问题描述2、问题原因3、解决办法4、总结4.1、返回指向字符串常量的指针4.2、不能返回以局部变量方式创建的字符串数组首地址4.3、在函数中,允许返回局部变量的值,不允许返回局部变量的地址4.4、函数的返回值可以是一个static类型的局部变量的地址4.5、数组是不能作为函数的返回值4.6、可以返回指向堆内存的指针1、问题描述toChinese是将数字转换成中文数字编译时提示...原创 2020-01-02 23:12:56 · 733 阅读 · 0 评论 -
【C语言】 union
文章目录#include <stdio.h> typedef union IP { unsigned char i[4]; int net;}IP;int main(){ IP ip = { 192,168,1,100 }; printf("%d\n",ip.net); printf("%d\n", ip.i[0]); p...原创 2020-01-01 21:24:15 · 155 阅读 · 0 评论 -
【C语言】结构体
文章目录1、结构体2、定义结构体2.1、包含结构体成员变量、variable2.2、 tag、结构体成员变量2.3、用结构体声名变量2.4、用typedef 创建新类型2.5、两个结构体相互包含2.6、结构体变量初始化2.7、结构体指针3、typedef3.1、给字符数组起别名3.1、定义新类型1、结构体struct tag{ 成员变量...}variable;tag 是结构体标...原创 2019-12-29 00:17:49 · 1919 阅读 · 0 评论 -
【C语言】字符串处理
文章目录1、strcpy2、strcat3、strlen4、sizeof5、strchr6、strrchr7、strstr8、strcmp1、strcpy2、strcat3、strlen计算字符串长度。4、sizeof5、strchr6、strrchr从右向左找7、strstr8、strcmp...原创 2019-12-28 21:23:34 · 175 阅读 · 0 评论 -
【C语言】数组和指针
文章目录1、数组的定义2、数组的赋值3、一维数组的地址4、字符数组1、数组的定义方括号中是元素个数,非负整数字面量int a[5];数组的初始化,数据不能多可以少少的部分用数值0填充int a[5]={0}//所有元素均为0int a[]={1,2,3}2、数组的赋值数组可以在初始化时赋值int a[5]={1,2,3,4,5}也可以对每个元素逐一赋值...原创 2019-12-27 23:47:17 · 295 阅读 · 0 评论 -
【C语言经典算法】将一个整数按二进制输出
文章目录1、用位运算实现2、用符号位实现1、用位运算实现将mask右移#include <stdio.h>int main(){ const int bits = sizeof(int) * 8; unsigned int mask = 1 << bits - 1;// 0x80000000 int n; printf("Input an i...原创 2019-12-26 21:25:40 · 5987 阅读 · 1 评论 -
【C语言】枚举
文章目录1、#define定义一星期7天2、枚举定义一星期7天3、改变枚举元素的值4、定义枚举变量4.1、先定义枚举类型,再定义枚举变量4.2、定义枚举类型的同时定义枚举变量4.3、省略枚举名称,直接定义枚举变量4.3、用typedef定义5、用枚举实现bool类型1、#define定义一星期7天用 #define 来为每个整数定义一个别名#define MON 1#define ...原创 2019-12-25 22:28:23 · 475 阅读 · 0 评论 -
结构体补充与对齐
#include &lt;stdio.h&gt; typedef struct Goods { char a[18];//18 double b;//8 char c;//1 int d;//4 short e;//2 }Goods; ...原创 2018-05-08 23:08:26 · 1281 阅读 · 0 评论 -
合理改变结构体体元素声明顺序,节省内存空间
#include <stdio.h> typedef struct Goods { char a[18];//18 double b;//8 char c;//1 int d;//4 short e;//2 }Goods;...原创 2018-05-08 23:39:07 · 3983 阅读 · 0 评论 -
将一个整数转换成二进制输出
方法一: 1 #include <stdio.h> 2 3 int main() 4 { 5 const int bits=sizeof(int)*8; 6 // unsigned int mask=0x80000000; 7 unsigned int mask=1<<bits-1; 8 int n; 9 ...原创 2018-05-04 22:28:38 · 6850 阅读 · 0 评论 -
彻底弄懂C语言数组名
转自:https://blog.youkuaiyun.com/Kwansy/article/details/78488222 先定义一个一维数组int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };1一、数组名是什么数组名的值是数组首元素的指针常量。 数组名不是指针,但大多数使用到数组名的地方,编译器都会把数组名隐式转换...转载 2018-06-24 23:08:50 · 11219 阅读 · 4 评论 -
gets和fgets函数的区别
getsgets函数原型: char*gets(char*buffer);gets函数功能: 从键盘上输入字符,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。读取的换行符被转换为’\0’,做为字符数组的最后一个字符,来结束字符串。 注意:gets函数由于没有指定输入字符大小,所以会无限读取,...原创 2018-07-10 23:29:28 · 997 阅读 · 0 评论 -
stderr和stdout
int fprintf(FILE *stream,char *format,[argument]);1,printf就是标准输出,在屏幕上打印出一段字符串来。2,sprintf就是把格式化的数据写入到某个字符串中。返回值字符串的长度。3,fprintf是用于文件操作。stdout 标准输出 stdin 标准输入 stderr 标准错误。标准输出和标准错误默认...原创 2018-07-13 23:58:57 · 239 阅读 · 0 评论 -
scanf读取含空格的字符串
scanf()函数接收输入数据时,遇以下情况结束一个数据的输入: ① 遇空格、“回车”、“跳格”键。 ② 遇宽度结束。 ③ 遇非法输入。 scanf接收包含空格的字符串#include &amp;lt;stdio.h&amp;gt; int main() { char str[80]; scanf...原创 2018-07-14 23:44:13 · 43049 阅读 · 8 评论 -
清除键盘缓冲区:scanf("%*[^\n]%*c")
//清除键盘缓冲区:scanf("%*[^\n]");scanf("%*c");但是,将两句合成下面一句时就不行了。scanf("%*[^\n]%*c");原因分析:stdin 里面只有1个\n的时候 scanf("%*[^\n]%*c");第一个格式控制字符串 不接受\n 直接返回 ,后面的 %*c直接失效. 而对于scanf("%*[^\n]");//...原创 2018-07-15 20:29:27 · 977 阅读 · 0 评论 -
sizeof只计算类型
#include <stdio.h>int main(){ int n=10; printf("%i\n",sizeof(int)); //4 printf("%i\n",sizeof(n)); //4 printf("%i\n",sizeof(n+5)); //4 printf("%i\n",sizeof...原创 2018-04-17 23:36:43 · 254 阅读 · 0 评论