
c语言学习笔记
Avotima_弦扬
毕业于三流高校的小运维
展开
-
c语言关键字
register关键字功能:请求编辑器尽可能地将变量存在cpu内部存储器中,省去抓取数据时间,提高程序运行效率。修饰寄存器变量:让变量值保持到寄存器中,频繁被访问的变量可上请为register变量。注:①register只能修饰局部变量,全局变量会被多个任务访问,当修饰为register时,只被当前 进程知道,所以全局变量不能使用register。②不能使用取地址获取r原创 2016-09-12 23:41:50 · 239 阅读 · 0 评论 -
linux文件系统2
write作用:向文件中写入数据函数原型:ssize_t write(int fd,const void * buf,size count);头文件:#include #include #include 返回值:如果成功发回实际写入的字节数,失败返回-1原创 2016-10-25 23:02:10 · 233 阅读 · 0 评论 -
消息队列
msgsnd函数的作用:写数据到消息队列函数的原型:int msgsnd(int msgid,const void *msggp,size_t int msgflg)函数的参数:msggp 消息、结构msgsize:消息的字节数msgflg:IPC_NOWAIT(写不进去直接返回)O:知道能写进去消息为止omsgctl函数的作用:控制转载 2016-10-26 23:11:25 · 315 阅读 · 0 评论 -
共享内存
共享内存的步骤1创建共享内存,并打开2映射共享内存3分离共享内存4控制共享内存,删除shmget函数的作用:在内核中创建共享内存函数的原型:int shmget(key_t key,int size,intshmflg);函数的参数:key(键值 IPC——PRIVATE私有的键值) size:创建的内存大小转载 2016-10-27 23:26:41 · 359 阅读 · 0 评论 -
c语言代码评审小结
概述 在实际的软件开发项目中,代码评审是一个必不可少的流程。代码评审,也称之为代码复查,是指通过阅读开发人员所写的代码来检查源代码与编码规范的符合性以及代码质量的活动。总的说来,代码评审的好处有以下几点: 第一,发现程序问题,提高代码质量。 第二,理清代码逻辑,开阔编程思路。 第三,促进团队交流,提升开发技能。代码评审的大体流程是这样的: 第一步,团队负责人(通常是开发转载 2016-10-20 00:23:48 · 366 阅读 · 0 评论 -
my_strcpy
void my_strcpy(char * s,char * d){ char * temps = s; char * tempd = d; if(*temps != '\0') { *tempd = *temps; tempd++; temps++; if(tempd ==原创 2016-09-29 00:38:05 · 288 阅读 · 0 评论 -
进程间的通信
1进程间可通过管道进行通信,管道管道是半双工,即单向传输2管道分为两种,有名管道和无名管道无名管道只能用于父子管道,兄弟管道等有亲近关系的进程之间,而有名管道则都可以。3创建管道必须在创建子进程之前,也就是说pipe()必须写在fork()之前4向管道写入时是从文件尾开始的,从缓冲区的头部输出转载 2016-10-24 23:36:40 · 208 阅读 · 0 评论 -
指针知识点
指针定义:指针是一个变量,保存的内容为地址。int num = 5;如果系统分配给num的空间为0x1000到0x1003 num的地址就为首字节地址0x1000。0x1000内保存的内容为5。定义指针pint* p = #指针p内保存的内容为num的地址,如果系统给p分配的地址为0x2000,可以得到下图指向内存空间和对应的内存空间:num++:对num对应的原创 2016-07-16 19:23:17 · 617 阅读 · 0 评论 -
格式化输入输出
格式化输入输出分别指scanf和printf函数。所谓格式化输入就是如果要输入,输入的格式必须与scanf中的格式相同,否则就无法输入。例如:scanf("num=%d",&num);如果直接输入数值"1",不能完成对num的赋值,只有输入“num=1”才能对num赋值。scanf输入的值通常先保存在缓冲区内,之后再根据变量数据类型取值。这样有时会产生问题,如果先对一个整型变量原创 2016-07-14 17:19:43 · 1376 阅读 · 0 评论 -
c语言的一些设问
主问题:为什么嵌入式选c答:因为linux内核用c编写问:为什么嵌入式内核用c编写答:因为c语言有以下三个特点1.有出色的移植性,能在多种不同硬件平台上运行2.c语言有简洁紧凑,使用灵活的语法机制,并能够直接访问硬件3.具有很高的运行效率问:什么是移植性答:一个平台上代码要在另一个平台上运移植xi行需要修改的地方越少,移植性越好。问:为什么内核不全部用汇编编写原创 2016-07-11 10:50:10 · 313 阅读 · 0 评论 -
浅谈嵌入式
学习笔记原创 2016-07-07 09:51:46 · 395 阅读 · 0 评论 -
gdb调试
gdb调试器主要有三大功能:1.启动被调试程序2.让被调试程序在指定位置停住3.查看状态 gdb调试gcc -g .c 文件编译.c文件并启动gdb调试gdb 可执行文件启动gdb调试 常用代码:run 执行文件list 查看代码break 设置断点next 单步执行(不会进入子函数)pri原创 2016-07-11 09:01:18 · 200 阅读 · 0 评论 -
函数
函数:1.写函数可以提高代码的维护性和复用性。2.函数内部尽量不要调用其他函数。3.写函数迭代开发方式。函数三要素:函数名 形参 返回值函数名要能体现代码的功能,一般函数名由动词+名词,名词与动词间用下划线隔开但下划线连接的单词不能超过5个。取值时形参值交换取地址时实参值交换函数名也是一个指针常量,保存的是函数存放的地址,又称为函数入口地址。原创 2016-09-13 23:26:33 · 211 阅读 · 0 评论 -
指针2
以a为例int a; 整型变量int *a; 整型指针变量int **a; 整型指针的指针变量int a[10]; 整型数组int *a[10]; 整型指针数组int (*a)[10];原创 2016-09-14 21:50:30 · 193 阅读 · 0 评论 -
c语言常见错误1
字符变量用scanf赋值前不加getchar代码如下:#include int main(){ int num; char ch; scanf("%d",&num); scanf("%c",&ch); printf("num = %d",num); printf("ch = %c",ch); return原创 2016-09-18 00:05:59 · 267 阅读 · 0 评论 -
goto语句及goto构成循环
goto语句是无条件转向语句,语句标符可由字母数字下划线组成,单不能单独用整数作为标号。如:goto label_1;上面的语句是合法的,而goto 123;是不合法的。goto语句一般有两种用途,第一种是和if一起构成循环结构,第二种是从循环体内跳出,但由于break和continue也有类似功能,所以现在不常用。原创 2016-10-09 21:47:14 · 5247 阅读 · 0 评论 -
预处理命令
一.宏定义1.不带参数的宏定义用一个标识符来代表一个字符串#define 标识符 字符串宏定义不需要以‘;’结尾如果定义#define PI 3.1415926;这里PI的值不是3.1415926,而是3.1415926;,分号被当作字符串的一个部分被赋值到PI中了。2.带参数的宏定义带参数的宏定义不只进行字符转换,还要进行参数转换如:原创 2016-09-20 23:46:46 · 203 阅读 · 0 评论 -
execl
execl函数的作用:执行一个文件函数的原型:int execl(const char *path, const char *arg,....)参数说明:path代表文件路径 arg:表示argv【0】,argv【1】最后一个一NULL结束返回值:成功函数没有返回,出错返回-1execv函数原型:int execv(const st转载 2016-10-23 23:23:25 · 337 阅读 · 0 评论 -
Linux文件系统(1)-creat,open
creat函数作用:创建一个文件函数原型:int creat(const char * pathname,mode_t mode)包含的头文件:#include #include #include 返回值:成功返回新的文件描述,失败返回-1。open函数作用:打开一个文件函数原型:int open(const char * path,int flag原创 2016-10-20 23:08:23 · 328 阅读 · 0 评论