
c
文章平均质量分 64
高大山又菜又爱学
电子信息工程专业
学习嵌入式软件
展开
-
C语言_条件编译的使用分析
文章目录条件编译基本概念#include的困惑疑问?处理方法条件编译的意义小结条件编译基本概念条件编译的行为类似于C语言中的if…else条件编译是预编译指示命令,用于控制是否编译某段代码栗子:#include <stdio.h>#define c 1int main(){ #if (c == 1) printf("有效哦"); #else printf("可恶"); #endif return 0;}经过预编译后 (省去<stdio.h>头原创 2022-05-19 18:50:32 · 302 阅读 · 0 评论 -
C语言_宏定义与使用分析
文章目录定义宏常量定义宏表达式宏强于函数的优势在哪宏表达式与函数的对比宏定义的作用域 与 #undef#undef强大的 内置宏定义日志宏思考定义宏常量#define定义宏常量可以出现在代码的任何地方#define从本行开始,之后的代码都可以使用这个宏常量就是简单的文本替换,错误格式的文本也直接替换定义宏表达式#define表达式给有函数调用的假象,却不是函数#define表达式可以比函数更强大#define表达式比函数更容易出错#define SUM(a,b) (a)+(b原创 2022-05-17 21:09:42 · 263 阅读 · 0 评论 -
C语言_编译过程
文章目录1. 预编译 file.c /file.h——>file.i2. 编译 file.i ——>file.s3. 汇编 file.s——>file.o链接器静态链接动态链接file.c file.h ——> file.i——> file.s——> file.o libc.a——> file.out1. 预编译 file.c /file.h——>file.i(处理文本)处理所有的注释,以空格代替将所有的#define删除原创 2022-05-17 16:21:01 · 197 阅读 · 0 评论 -
C语音_优先级和类型转换分析
文章目录优先级举个栗子C语言隐式类型转换栗子:优先级举个栗子#include <stdio.h>#include <malloc.h>typedef struct _demo{ int* pint; float f;}Demo;int func(int v,int m){ //==和!=高于位操作,这里的实际情况是 //return(v & (m!=0) ); return( v & m !=0);}int main{ Dem原创 2022-05-14 16:58:49 · 512 阅读 · 0 评论 -
C语言_void和extern的分析
目录void的意义void指针的意义extern中隐藏的意义void的意义void修饰函数的返回值和参数如果函数没有返回值,那么应该将其声明为void的型如果函数没有参数,那么应声明其参数为voidvoid修饰函数返回值和参数仅为了表示无attention:不存在void变量,c语言没有定义void究竟是多大内存的别名,无法从内存中剪裁出void对应的变量printf("%d\n",sizeof(void));会有两个报错;不允许出现一个void的类型;sizeof不允许用于v原创 2022-05-09 20:01:16 · 4040 阅读 · 0 评论 -
C语言_++--操作符的使用分析
目录思考逗号表达式贪心法++,--表达式的阅读技巧例题思考先举个栗子:int i = 3;i = (++i) + (++i) + (++i);//编译器会有两个结果18和16//三个一起算和先算先两个再举一个:int i = 1;printf("%d,%d,%d",++i,i,i++);//这个凭直觉判断也会直接错误//涉及的知识我还不太会解释都是编译器未定义的行为,由编译器决定逗号表达式面对这个问题,引入逗号表达式逗号表达式是C语言优先级最低的运算符。逗号表达式是左结原创 2022-05-08 15:56:52 · 1501 阅读 · 0 评论 -
C语言_位运算符分析
目录位运算符交换两个变量的分析例题位运算符& 按位与| 按位与^ 按位异或~ 取反<< 左移>> 右移举个栗子int main(){ int a = 1; a = 0x1 << 2 + 3; printf("a=%d\n",a); return 0;}0x1 << 2 + 3的运算顺序不能凭直觉判断实际上是先算2 + 3,输出为a=32写的原创 2022-05-06 15:50:09 · 434 阅读 · 0 评论 -
C语言_逻辑运算符使用分析
目录程序中的“短路”“!”的运用三目运算符(a?b:c)一个程序引入#include<stdio.h>int main(){ int i = 0; int j = 0; if(++i>0 || ++j>0) { printf("i=%d,j=%d\n",i,j); //输出的是1,0哦 } return 0;}程序中的“短路”短路规则:||从左向右开始计算,当遇到为真的条件时停止计算,整个表达式原创 2022-05-05 17:14:23 · 770 阅读 · 0 评论 -
C语言的 接续符 和 转移符
目录接续符 \接续符的使用宏代码块的定义转义符接续符 \当反斜杠作为接续符使用时可直接出现在程序中C语言中的接续符\是指示编译器行为的工具把接续符回复后:#define MAX 255int main(){ //这是注释 int *p = NULL; printf ("%d\n",p); return 0;}可以乱塞接续符,但也只是可以,不要做。接续符的使用编译器会将反斜杠剔除,跟在反斜杠后面的字符自动解到前一行在原创 2022-05-03 15:26:19 · 724 阅读 · 0 评论 -
C语言_注释符号的分析
目录初探注释规则注释小结应该如何写初探注释规则先来一段代码,出现了三种注释的使用,观察是否合法#include <stdio.h>int main(){ int/*..*/i; char* s = "abcdegh //hijklmn"; //Is it a\ valid comment? in/*..*/t i; return 0;}编译后[外链图片转存失败,源原创 2022-05-02 19:52:43 · 309 阅读 · 0 评论 -
C语言_enum和typedef的分析
目录enum枚举类型的使用方法#define宏常量与enum的区别typedef的意义typedef和#define的区别enum枚举类型的使用方法enum是一种自定义类型enum定义的常量 首项为0;默认常量在前一个值的基础上依次加1enum类型的变量只能取定义时的离散值enum Color{ GREEN, BLUE = 2, RED};printf("%d,%d,%d\n",GREEM,BLUE,RED); //0,2,3#define宏常量与enum原创 2022-05-01 17:40:45 · 285 阅读 · 0 评论 -
C语言_struct和union的分析;利用struct创建弹性数组(柔性数组)union判断系统大端小端
柔性数组即数组大小待定的数组C语言中结构体的最后一个元素可以是大小未知的数组C语言中可以由结构体产生柔性数组struct中的每个域在内存中都独立分配空间union只分配最大域的空间,所有域共享这个空间原创 2022-04-29 17:10:13 · 780 阅读 · 0 评论 -
C语言_const关键字如何修饰数组、指针和函数
目录const关键字const修饰数组const修饰指针const修饰函数的参数和返回值const关键字const关键字用于将一个变量声明为只读,“无法被修改”,也就常量.const int number = 1; //声明number为常量,并初始化赋值//下方error操作number = 2; //放在赋值符号左侧 就会报错在C语言中const修饰的变量是只读的,其本质还是变量,所以const修饰的变量会在内存占用空间。本质上const只对编译器有用,在运行时无用const in原创 2022-04-28 18:00:20 · 4037 阅读 · 4 评论 -
C语言入门复习
C语言入门笔记1、基本语法printf()2、变量变量名变量的声明变量的赋值变量的作用域3、运算符算数运算符(1)+ - 没什么要说的(2)* 就乘法(3)/(4) %(5)赋值运算的简写形式自增运算符,自减运算符关系运算符逻辑运算符位运算符(1)取反运算符 ~(2)与运算符 &(3)或运算符 |(4)异或运算符 ^(5)左移运算符 <<(6)右移运算符 >>逗号运算符运算优先级4、流程控制if语句三元运算符 ?:switch语句while 语句do...while 结构fo原创 2022-02-24 16:38:07 · 743 阅读 · 0 评论