
C
文章平均质量分 75
zhao
多做点笔记,多复习
展开
-
嵌入式linuxC函数整理
为便于以后的查阅与复习本文整理了嵌入式linux C中用到的多数函数,包括以下9个大类: 内存管理 字符串处理 时间函数 随机函数 文件IO函数 标准IO函数 格式化输入输出和错误处理函数 文件和目录函数进程相关函数一:内存管理函数 1相关函数:malloc 头文件:#include 函原创 2012-12-15 16:22:22 · 796 阅读 · 0 评论 -
数组和指针的区别
发现好多人搞不清楚数组和指针的区别,以我浅薄的了解谈一谈吧。原创 2013-10-23 13:24:28 · 2207 阅读 · 1 评论 -
stardup
strdup(复制字符串)相关函数 calloc,malloc,realloc,free表头文件 #include定义函数 char * strdup( const char *s);函数说明 strdup()会先用maolloc()配置与参数s字符串相同的空间大小,然后将参数s字符串的内容复制到该内存地址,然后把该地址返回。该地址最后可以利用free()来释放。返回值 返回一原创 2013-05-24 16:29:55 · 640 阅读 · 0 评论 -
typedef的使用
一般书籍上关于type得分的描述,都不怎么全面,仅知道typedef是为变量命名别名。于是,下面的一些命名也是便于理解的。typedef int my_int;my_int iint; // 定义一个int型变量typedef char* c_point;c_point my_point; //定义一个char*指针但是遇到类似于typedef char *p 貌原创 2013-04-19 12:38:24 · 717 阅读 · 0 评论 -
野指针
以前不小心,用到野指针也只不过会让程序贲快,或者别的什么的,今天真不容易呀,尽然有了野指针prinft(const char ,[arg])的功能都失常了,该函数尽然不接受参数为变量了!找了n久才发现竟然是他的问题,简直可恶!原创 2013-03-24 17:53:50 · 546 阅读 · 0 评论 -
几个越界的问题
#include #include int main(){ char a[1000]; int i; for(i=0; i<1000; i++) { a[i] = -1-i; } printf("%d",strlen(a)); return 0;} 上述结果255,在计算机种采用补码的方式存储负数,补码即为原码取反加1,故-1的补码为0xff,同时可以得到一结原创 2013-03-17 21:57:32 · 970 阅读 · 0 评论 -
C语言中的typeof关键字
原文地址http://bbs.chinaunix.net/thread-3595195-1-1.html另一种引用一个表达式类型的方法就是使用typeof,使用这个关键字的语法看上去有点像使用sizeof,但从本质上讲,它更像是使用typedef定义一个类型名称。可以使用表达式或是一个类型名来引用类型。比如下面是一个使用表达式的例子:typeof (x[0](1转载 2013-03-30 21:18:11 · 3256 阅读 · 0 评论 -
V + = e不等价于 v = v + e
计算v + = e只会求一次v的值,而计算 v = v + e则会求两次v的值。在后一种情况下,对v的求职可能的副作用会出现两次。在下面的例子中,i值自增一次。a[i++] += 2;a[i++] = a[i++] +2i的值在别处被修改和使用了,因此上述语句的结果是未定义的。i的值可能被修改两次,但我们无法确定结果会发生神马!原创 2013-03-12 21:59:25 · 1003 阅读 · 0 评论 -
C语言中的布尔值
C89中没有定义布尔类型,只能int flag = 0;flag = 1;然而flag可能被赋予别的值,或者#define TRUE 1#define FALSE 0flag = TRUE ;...flag = FALSE;在C99中定义了Bool型,故这一版本中,布尔变量可以申名为:_Bool flag;_Bool是整数类型,更准确的说是无符号整型,但是和一般整形不同,只能被赋值原创 2013-03-13 07:47:54 · 1844 阅读 · 0 评论 -
符号的技巧
注释规则小结编译器会在编译过程删除注释,但不是简单的删除而是用空格代替编译器认为双引号括起来内容都是字符串,双斜杠也不例外“/*……*/”型注释不能被嵌套接续符的使用\:编译器会将反斜杠剔除,跟在反斜杠后面的字符自动解到前一行在接续单词时,反斜杠之后不能有空格,反斜杠的下一行之前也不能有空格,接续符适合在定义宏代码块时使用三目运算符(a?b:c)可以作为逻辑原创 2012-12-24 20:22:46 · 369 阅读 · 0 评论 -
利用宏实现定义结构体的好方法
宏定义#define STRUCT(type) typedef struct _tag_##type type;struct _tag_##type以后利用STRUCT(type)便可定义一个结构体,在预编译时上述宏被展开为:typedef struct _tag_type type;struct _tag_type原创 2012-12-15 16:26:57 · 1691 阅读 · 0 评论 -
判断系统大小端
C语言中union只分配最大域空间,利用该特性可判断系统大小端。union check{ int i;char j;};check.i=1;check.j=? 为1系统为小端模式,为0系统为大端模式另一种判断系统大小端的方式,利用指针,不同类型的指针意味着在内存中读大小不同的数据 int i = 1; char * j; j=(char* )&i原创 2012-12-24 17:04:49 · 409 阅读 · 0 评论 -
结构体里面的.value
在linux内核中经常看到诸如下面的结构体样式static const struct file_operations mem_fops = { .llseek = memory_lseek, .read = read_mem, .write = write_mem, .mmap = mmap_mem, .open = open_mem, .get_unmapp原创 2012-12-19 17:50:42 · 405 阅读 · 0 评论 -
编译器的一些疑惑
对32位机器来说,不同类型的指针从本质上说都是一个32位的地址,只不过指向的地址大小是不同的。如:char *a a指向的地址为一个字节大小;int *b b指向的地址为四个字节的大小。于是我想看看,不同类型指针间的区别,于是有了下面的程序:#include int main(){char a=6;int *b;b=(int*)&a;printf(原创 2012-12-19 16:17:47 · 412 阅读 · 0 评论