摘要:柔性数组成员柔性数组1、允许结构中包含一个大小可变的数组,sizeof返回的这种结构大小不包括柔性数组的内存。2、包含柔性数组成员的结构要使用malloc()函数进行内存的动态分配。分配的内存大于结构体的大小。3、柔性数组的定义typedef strcut type{ int i; int a[];...
阅读全文
随笔分类 - C
摘要:常用数据类型对应字节数:这两台机器,前者32位,后者64位,测试了以下数据类型的长度:前者:int:4,long:4,long long:8后者:int:4,long:8,long long:8不是说int会变吗,为何变得是long?还有如果要写个通用的程序,订死必须用4个或8个字节的数据类型,在不...
阅读全文
摘要:不明白的sizeof(enum)数据结构存储问题typedef struct weekday_st{ enum week {sun=123456789,mon,tue,wed,thu,fri,sat,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,...
阅读全文
摘要:union 关键字的用法与struct 的用法非常类似。union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址。例子如下:union StateMachi...
阅读全文
摘要:字符串、字符数组输入、输出与'\0'的问题原创首发,欢迎转载!作者按字符串、字符数组以"%s"格式输入时,以遇到'空格'为这个字符串输入结束。字符串、字符数组以"%s"格式输出时,以遇到的第一个'\0'为输出结束标记!C程序设计(谭浩强,第二版,P134)**********************...
阅读全文
摘要:C语言编程规范6 函数与过程6.1 函数的功能与规模设计函数应当短而精美,而且只做一件事。不要设计多用途面面俱到的函数,多功能集于一身的函数,很可能使函数的理解、测试、维护等变得困难。6.2 函数的返回值(1)对于函数的返回位置,尽量保持单一性,即一个函数尽量做到只有一个返回位置。(单入口单出口)。...
阅读全文
摘要:内核时注意到有些函数会有添加__attribute__((unused)),在gcc手册中找到了有关的解释:unused:This attribute, attached to a function, means that the function is meant to be pos...
阅读全文
摘要:在c++中,为了解决一些频繁调用的小函数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数。 可能说到这里,很多人还不明白什么是栈空间,其实栈空间就是指放置程序的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,如果频繁大量的使用就会造成因栈空间不足所造...
阅读全文
摘要:UNICODE,GBK,UTF-8区别UNICODE,GBK,UTF-8区别简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的,同一个汉字,那三个码值是完全不一样的.如"汉"的uncode值与gbk就是不一样的,假设u...
阅读全文
摘要:通常的技巧是使用一个指针: int x = 1; if(*(char *)&x == 1) printf("little-endian\n"); else printf("big-endian\n");或者一个union: union { int i; char c[si...
阅读全文
摘要:什么是结构体? 简单的来说,结构体就是个能够包含不同数据类型的一个结构,他是一种能够自己定义的数据类型,他的特点和数组主要有两点不同,首先结构体能够在一个结构中声明不同的数据类型,第二相同结构的结构体变量是能够相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,他本身不是数据类型(而...
阅读全文
摘要:读书笔记之:C语言深度剖析《C 语言深度解剖》这本书是一本“解开程序员面试笔试的秘密”的好书。作者陈正冲老师提出“以含金量勇敢挑战国内外同类书籍”,确实,这本书中的知识点都是一些在面试中常见的考点,并且很多都是我们平常不注意的点,对于我们深入理解C语言确实很有帮助。第1章关键字1.register虽...
阅读全文
摘要:启动一个C语言程序时,操作系统环境负责打开三个文件,并将这3个文件的指针提供给该程序。这3个文件分别为标准输入(stdin)、标准输出(stdout)、标准错误(stderr)。它们在stdio.h中声明,大多数环境中,stdin指 ...启动一个C语言程序时,操作系统环境负责打开三个文件,并将这3...
阅读全文
摘要:#line 的作用是改变当前行数和文件名称,它们是在编译程序中预先定义的标识符命令的基本形式如下: #line number["filename"]其中[]内的文件名可以省略。例如: #line 30 a.h其中,文件名a.h 可以省略不写。这条指令可以改变当前的行号和文件名,例如上面的这条预处理指...
阅读全文
摘要:今天去翻了下C语言运算符的优先级和结合性,发现当初学习的时候就没认真记住,惭愧。发现一篇讲得不错的文章,编辑了下转来供以后翻阅。C语言运算符优先级表(由上至下,优先级依次递减)运算符结合性() [] -> .自左向右! ~ ++ -- - (type) * & sizeof自右向左* / %自左向右...
阅读全文
摘要:#include#include//异或法unsigned char byteReverse(unsigned char val) { int i; for (i = 0; i > i) ^ ((val & (1 > (7 - i))) val ^= (1 >i); b = value&(0x...
阅读全文
摘要:概述 内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况,在大型的、复杂的应用程序中,内存泄漏是常见的问题。当以前分配的一片内存不再需要使用或无法访问时,但是却并没有释放它,这时就出现了内存泄漏。尽管优秀的编程实践可以确保最少的泄漏,但是根据经验,当使用大量的
阅读全文
摘要:其实: int main(int argc,char *argv[])是UNIX和Linux中的标准写法,而int main()只是UNIX及Linux默许的用法..void main(int argc, char* argv[ ])等同于void main(int argc, char* *arg...
阅读全文
浙公网安备 33010602011771号