![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
linxi8693
这个作者很懒,什么都没留下…
展开
-
C语言的 scanf函数
#include <stdio.h>int main(void){ char c = 0; int a = 0, b = 0, result = 0; printf("请输入要操作的2个整数:\n"); scanf("%d %d", &a, &b); //这在输入两个变量会ENTER一下 printf("请输入...原创 2018-04-09 10:34:05 · 307 阅读 · 0 评论 -
C语言的错误大全及中文解释
01: Ambiguous operators need parentheses — 不明确的运算需要用括号括起02: Ambiguous symbol xxx — 不明确的符号03: Argument list syntax error — 参数表语法错误04: Array bounds missing — 丢失数组界限符05: Array size toolarge — 数组尺寸太大06: B...转载 2018-05-11 13:00:31 · 5078 阅读 · 0 评论 -
C语言字符串库函数详解
1)字符串操作复制 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串增加 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串截取 strlen(p) 取字符串长度比较 s...转载 2018-05-12 14:56:52 · 12203 阅读 · 0 评论 -
C语言定义结构体时,各成员后面:作用
前提概要 为节省存储空间,并使处理简便,C语言提供了一种数据结构,称为“位域”或“位段”说明 所谓“位域”是把一个字节中的二进位划分为几 个不同的区域, 并说明每个区域的位数 每个域有一个域名,允许在程序中按域名进行操作 总结 以上操作可把几个不同的对象用一个字节的二进制位...原创 2019-04-04 13:53:03 · 1693 阅读 · 0 评论 -
函数指针
函数指针定义方式 函数返回值类型 (* 指针变量名) (函数参数列表); 说明 “函数返回值类型”表示该指针变量可以指向具有什么返回值类型的函数; “函数参数列表”表示该指针变量可以指向具有什么参数列表的函数。...原创 2019-05-24 20:29:54 · 170 阅读 · 0 评论 -
C语言设计模式(面向对象)
前提概要 面向对象软件设计中常用3类模式:创建模式、结构模式、行为模式创建模式 分类 工厂方法模式、抽象工厂模式、单态模式、构造者模式、原型模式结构模式 分类 适配器模式、桥接模式、组合模式、装饰模式、门面模式、代理模式、享元模式行为模式 分类...原创 2019-05-30 16:28:00 · 617 阅读 · 0 评论 -
rand()和srand()
前提概要 rand()用于生成随机数,但不是生成真正的随机数 srand()用于设置供rand()使用的随机数种子 提示 第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand(),自动调用传参值为1 使用相同种子(srand函数传参值相同),调用 ...原创 2019-05-31 11:25:44 · 14646 阅读 · 0 评论 -
calloc、realloc、malloc
malloc和free 前提概要 C函数库中的malloc和free分别用于执行动态内存分配和释放 以上两个函数在头文件stdlib.h中声明 函数原型 void *malloc ( size_t size ); void free ( void *po...原创 2019-05-31 17:22:13 · 1154 阅读 · 2 评论 -
函数调用传参字符串
参考例程int main(int argc,char **argv){ A(5); B("test");}int A(int a){ return a;}char * B(char* str){ return str;}说明 主函数调用 A 和B函数;其中 A 函数会创建一个临时变量a存放 5,A函数结束调用后临时变量a释放...原创 2019-06-01 11:45:33 · 898 阅读 · 0 评论 -
realloc函数
函数原型 void *realloc(void *ptr, size_t size);作用 realloc在原有内存基础上在堆上再分配指定数量的内存块,分配成功,返回新的地址 说明 在之前内存空间追加内存块成功,返回值为原内存空间指针...原创 2019-06-04 13:16:58 · 2660 阅读 · 0 评论 -
验证指定代码段运行效率
参考代码#include<stdio.h>#include<stdlib.h>#include<time.h>int main(int argc,char **argv){ struct timespec time_start = {0, 0}, time_end = {0, 0}; clock_gettime(CLOCK_REALTIME, ...原创 2019-06-05 09:29:35 · 147 阅读 · 0 评论 -
单片机面向对象编程
00、前提概要 记录在面向对象的实现方式,做参考未做详细实现细节01、定义i2c类typedef struct _class_i2c { GPIO_TypeDef * gpiox; GPIO_Pin_TypeDef sda,scl; void (*pf_start)(class_i2c *object_i2c); void (*pf_st...原创 2019-08-02 09:28:50 · 1320 阅读 · 0 评论 -
C语言程序可以没有main函数
学习C语言的同学都知道,每个C程序要有一个main函数,程序从main函数开始执行,在main函数中结束。但事实上,C程序也可以没有main函数,或者说自己可以指定入口函数。下面这篇文章介绍了如何实现这一过程。这篇文章转自:http://www.codeweblog.com,作者不详。学习这个内容对程序设计没啥影响,但能更深入地了解程序编译和链接的原理。 这篇文章主要介绍了C语言之没...转载 2018-05-01 10:17:49 · 1711 阅读 · 0 评论 -
C库函数fopen/fread/fwrite/fclose/fseek/ftell
fopen(打开一个文件,返回指向该文件的指针) 函数原型 FILE * fopen(const char *path,cost char *mode) 参数说明 const char *path 打开文件文件路径及文件名 ...原创 2018-04-30 11:32:17 · 510 阅读 · 0 评论 -
NULL
NULL非C语言关键字,而是宏定义宏定义方式 #ifdef _cplusplus //_cplusplus:C++ #define NULL 0 #else #define NULL (void *)0 //NULL在C和C++中的宏定义是不同的NULL、'\0'、0三者的联系 NULL 是一个表达式 (voi...原创 2018-04-13 12:28:05 · 449 阅读 · 0 评论 -
C语言用到运算符和库函数
char *p = "linux"; //该字符串是存于code段的int a = sizeof(p); //a = 4 int b = strlen(p); //b = 5,不包含字符串结尾的'\0' //原型:size_t strlen(const char *s); //参数为字符串指针,size_t为intsizeof ...原创 2018-04-10 14:42:22 · 336 阅读 · 0 评论 -
C语言零散知识点汇总
/****************typedef与const****************************************/typedef int *PINT; const PINT p2; 相当于是int *const p2;typedef int *PINT; PINT const p2; 相当于是int *const p2; 以上都是指针本身是常量...原创 2018-04-10 19:07:58 · 207 阅读 · 0 评论 -
offsetof宏与container_of宏
#define offsetof(TYPE, MEMBER) ((int) &((TYPE *)0)->MEMBER) //通过结构体指针得到指定元素的偏移量 // TYPE是结构体类型,MEMBER是结构体中一个元素的元素名 // 宏返回member元素相对于整个结构体变量的首地址的偏移量,类型是int//通过结构体元素指针得到结构体的指针#define cont...原创 2018-04-10 22:49:07 · 117 阅读 · 0 评论 -
共用体
union myunion{ int a; char b;};共用体: 共用体的元素,共用同一块内存空间 共用内存空间大小,以定义的元素中占有内存空间最大的为准 对同一块内存空间以不同的类型进行解释例 myunion占用内存空间为4字节 变量a使用4字节,变量b使用1字节(其余3字节未使用) 变量a和变量b的指针相同 共用内存空...原创 2018-04-11 08:38:42 · 96 阅读 · 0 评论 -
枚举
定义 enum week{ SUN, // SUN = 0 MON, // MON = 1; TUE, WEN, THU, FRI, SAT, }today,yesterday; //定义枚举的同时定义了两个枚举变量today、yesterday ...原创 2018-04-11 11:23:18 · 119 阅读 · 0 评论 -
C语言-运算优先级
C语言优先级优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右 ()圆括号(表达式)/函数名(形参表) .成员选择(对象)对象.成员名 ->成员选择(指针)对象指针->成员名 2-负号运算符-常量右到左单目运算符(类型)强制类型转换(数据类型)表达式 ++自增运算符++变量名/变量名++单目运算符--自减运算符--变量名/变量名--单目运算符*取值运算符...转载 2018-04-04 14:57:56 · 212 阅读 · 1 评论 -
C语言static的使用
static作用(修饰函数、局部变量、全局变量)在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容chara=...转载 2019-05-10 16:55:13 · 10598 阅读 · 0 评论 -
C语言的重定向fputc函数
重定向 即自己重写C的库函数 提示 链接器检查到用户编写了与C库函数相同名字的函数时,优先调用用户编写函数,这样就可实现重定向重定向printf()函数 需重写fputc()这个c标准库函数(printf()在c标准库函数实质是一个宏,实际是调用fputc()函数) 说明...原创 2018-03-26 19:43:18 · 12093 阅读 · 2 评论 -
for(;;)和while(true)的区别
两者都实现了无限循环编译前后的区别 编译前 编译后 while (1); mov eax,1 test eax,eax je foo+23h...原创 2018-04-12 13:01:35 · 136 阅读 · 0 评论 -
restrict关键字
c99中新增加了一个类型定义,就是restrict看了下网上的相关贴子,但还是问题解决的不够。下面是相关一个文章,我将在后面再加相关说明:那么restrict的意义是什么呢?概括的说,关键字restrict只用于限定指针;该关键字用于告知编译器,所有修改该指针所指向内容的操作全部都是基于(base on)该指针的,即不存在其它进行修改操作的途径;这样的后果是帮助编译器进行更好的代码优化,生成更有效...转载 2018-04-12 17:37:30 · 417 阅读 · 0 评论 -
main函数
几种写法 int main(void){} int main(in argc,char **argv){} int main(int argc,char *argv[]){}main函数是整个C语言程序的入口,其他函数被main函数直接/间接调用程序执行本质 Linux中一个新程序的执行本质上是一个进程的创建、加载、运行、消亡 一个程序就是创建一个进程,...原创 2018-04-13 10:47:39 · 162 阅读 · 0 评论 -
void类型
C语言属强类型语言 强类型 所有变量都有固定类型、内存占用、解析方式 弱类型 所有变量全都一个类型(字符串),类型在需要时在转换对应类型void类型本质 不知道类型、不确定类型 void类型不是无类型,只是不知道类型void类型意义 在对一段内存需使用,但不知具体类型时,可使用void类型进行标记、占用 void 一般使用都是用 voi...原创 2018-04-13 11:59:36 · 1423 阅读 · 1 评论 -
C语言中的break
参考例程 1 -> 用于for循环for(;;){// A for(;;) {// B break; // 只跳出B的for循环 }}参考例程 2 -> 用于switchint i;switch(i){ case 1: break; // 跳出Switch case 2: ...原创 2019-08-12 17:53:51 · 20126 阅读 · 2 评论