C
bxlsky
android, C, C++, Linux, SIM, Modem.
展开
-
C语言指针数组和数组指针
一、指针数组和数组指针的内存布局初学者总是分不出指针数组与数组指针的区别。其实很好理解:指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。数组指针:首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。下面到底哪个是数组指针,哪个是指针数转载 2013-06-20 17:34:03 · 650 阅读 · 0 评论 -
Object-C中的#和##操作符(The # and ##Operator)
The # OperatorIf you place a # in front of a parameter in a macro definition, the preprocessor createsa constant C-style string out of the macro argument when the macro is invoked. For example,转载 2013-06-20 11:27:49 · 891 阅读 · 0 评论 -
C语言指针与数组之间的恩恩怨怨
很多初学者弄不清指针和数组到底有什么样的关系。我现在就告诉你:他们之间没有任何关系!只是他们经常穿着相似的衣服来逗你玩罢了。指针就是指针,指针变量在32 位系统下,永远占4 个byte,其值为某一个内存的地址。指针可以指向任何地方,但是不是任何地方你都能通过这个指针变量访问到。数组就是数组,其大小与元素的类型和个数有关。定义数组时必须指定其元素的类型和个数。数组可以存任何类型的数据转载 2013-06-20 17:32:36 · 706 阅读 · 0 评论 -
C语言多维数组与多级指针
多维数组与多级指针也是初学者感觉迷糊的一个地方。超过二维的数组和超过二级的指针其实并不多用。如果能弄明白二维数组与二级指针,那二维以上的也不是什么问题了。所以本节重点讨论二维数组与二级指针。一、二维数组1、假想中的二维数组布局我们前面讨论过,数组里面可以存任何数据,除了函数。下面就详细讨论讨论数组里面存数组的情况。Excel 表,我相信大家都见过。我们平时就可以把二维数组假想成一个转载 2013-06-20 17:31:30 · 888 阅读 · 0 评论 -
__attribute__ ((packed))
1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关,gcc编译器不是紧凑模式的,我在windows下,用vc的编译器也不是紧凑的,用tc的编译器就是紧凑的。例如:在TC下:struct my{ char ch; int a;} sizeof(in转载 2013-07-18 15:02:38 · 552 阅读 · 0 评论 -
GNU C 与 ANSI C的区别
1.零长度数组GNU C允许使用零长度数组,定义变长度对象时比较方便struct var_data { int len; char data[0];};var_data的大小仅为一个int型,data是常量地址,data[index]是访问其后的内存空间。struct var_data *s = malloc(sizeof(var转载 2013-07-19 11:01:55 · 784 阅读 · 0 评论 -
typedef struct的时候,为什么可以有两个名称,两个名称的区别?
代码如下typedef struct tagXX{}XX;上面的,为什么不直接struct XX{};呢,或者把tagXX去掉。tagXX是结构体的【本名】,XX是【别名】,无论本名和别名都不是必要的,你甚至可以两个都不要。传统C语言中,定义结构体的标准语法是:struct tagXX{};tagXX是这个结构体的【本转载 2013-08-05 17:09:40 · 12300 阅读 · 5 评论 -
x&(x-1)含义
x&(x-1)表达式的意义求下面函数的返回值(微软) -- 统计1的个数-------------------------------------int func(int x){ int countx = 0; while(x) { countx++; x = x&(x-1); } return转载 2014-03-10 15:30:27 · 1030 阅读 · 0 评论