
C编程语言
文章平均质量分 72
慎思明辨
积累、整理、分享
展开
-
typedef的理解及复杂函数声明的理解
在讲typedef前先简单说下#define,这两个对我而言总是有点记不住的原创 2014-10-20 20:27:16 · 672 阅读 · 0 评论 -
atoi函数理解字符存储
atoi函数理解字符存储编程中容易犯错的就是所要处理的字符串没有以’\0’结尾,如下代码typedef struct example{ ... char serial_number[4]; int index; ...}TEST_PARAM;TEST_PARAM test_param;memset(&test_param, 0, sizeof(test_param));memc原创 2016-07-09 16:03:28 · 599 阅读 · 0 评论 -
dup函数日志打印重定向
嵌入式设备可能有无法实时查看调试打印信息的时候,可通过将其输出重定向到文件中,便于后面读取该文件查看打印信息。可通过dup函数实现,下面是简单的实现代码,再做些简单说明。int main(void){ int stdout_sfd = -1; int file_fd = -1; int stdout_nfd = -1; mode_t old_mask = 0;原创 2016-07-10 17:43:41 · 1089 阅读 · 1 评论 -
《c陷阱与缺陷》4-6章笔记
连接1、extern 关键字表示对外部对象的引用,其定义只能在程序的某个地方进行,且只能定义一次。另外尽量少使用extern多处引用外部变量,如若干个函数需要共享一组外部对象,可以将这些函数放到一个源文件中,把需要用到的对象也放在同一个源文件中以static修饰符声明,static修饰符可以起到减少命名冲突的作用,函数也一样。2、如果一个函数在被定义或声明之前被调用,那么它的返回类型默认就是整型,因原创 2016-07-10 00:28:23 · 526 阅读 · 0 评论 -
《c陷阱与缺陷》1-3章笔记
词法陷阱1、注意=与==的使用 比较容易犯错的是将==写成了=,除了自己多加注意以外,养成习惯将要比较的常量值放在左边,这样如果写成了=号,编译就会报错。类似的还有&和&&、|和||。2、对于多运算符操作的语句,直接用括号来显示运算优先级,使代码易读清晰语法陷阱1、理解函数声明 分析的过程: A、从左开始查看变量或函数名,然后按照优先级顺序依次读取 B、优先级从高到低依次是:原创 2016-06-11 22:12:50 · 687 阅读 · 0 评论 -
printf、sscanf进行16进制数据转换问题
问题1:原程序的目的是将字符串形式的mac地址存放在char型数组当中(如有更好的获取方法留言说下,谢谢),代码如下,在mac执行如下代码后,变量int型值发生了变化。#include typedef unsigned int uint32;int main(void){ int num = 1; char str_mac[] = "7f:ab:ee:af:5原创 2016-01-17 14:00:01 · 6377 阅读 · 0 评论 -
二进制文件与文本文件
简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码)转载 2015-09-21 20:06:37 · 493 阅读 · 0 评论 -
模拟进度条
本文通过编写模拟进度条程序来记录一些知识点,进度条始终在同一行显示,且不断的增加打印*个数以表示进度增加,程序如下: 1 #include 2 3 void display_progress(int num) 4 { 5 int i = 0; 6 7 for (i = 0; i < num; i++) 8 { 9原创 2015-10-10 14:43:42 · 1067 阅读 · 0 评论 -
函数式宏定义与普通函数
在C及C++语言中允许用一个标识符来表示一个字符串,称为宏,该字符串可以是常数、表达式、格式串等。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。若字符串是表达式,我们称之为函数式宏定义,那函数式宏定义与普通函数有什么区别呢?转载 2015-09-21 11:42:55 · 500 阅读 · 0 评论 -
getopt
getopt函数说明原创 2015-02-12 14:44:06 · 565 阅读 · 0 评论 -
C语言数组
声明C语言中只有一维数组,其元素可以是任何类型的,也可以是另外一个数组,如:int array[5][10];该表达式声明了一个array一维数组,其元素个数是5,元素类型是一个含有10个整型元素的数组。数组的大小必须在编译期作为一个常数确定,如程序中存在如下代码:int buf_size = 512;int buf[buf_size]; 可能会导致编原创 2015-01-25 17:53:02 · 572 阅读 · 0 评论 -
信号
信号信号是软件中断,可通过敲系统命令“kill -l”查看可用的信号值,如“kill -9 pid”就是常用的发送杀死进程信号,kill默认发送SIGTERM终止信号。相应的kill函数将信号发送给进程或进程组,raise函数则运行进程向自身发送信号。#include <signal.h>int kill(pid_t pid, int signo);int raise(int signo);信号原创 2016-09-08 23:54:33 · 505 阅读 · 0 评论