C
darz
这个作者很懒,什么都没留下…
展开
-
c语言指针类型参数的传递方式
C语言中数组类型和函数类型的参数只能是按地址传递参数;而整数类型、字符类型、浮点类型、枚举类型、指针类型、结构类型和联合类型只能是按值传递参数,这其中指针类型的参数传递方式最容易迷惑。 下面看一个简单的例子: void set(char *p){ p=NULL; printf("address原创 2006-12-17 20:04:00 · 4316 阅读 · 2 评论 -
c语言中的位域
位域又叫位段,是一种特殊的结构成员伙联合成员(即,只能用在结构或联合中),用于指定该成员在内存存储时所用到的位数,从而可以在机内更紧凑的表示数据。带位域的结构爱内存中各个位域的存储方式取决于具体的编译程序:可以从左向右,也可一从右向左存储。注意:1、 位域的长度不能大于int对象所占用的位数。2、 由于位域的实现会因编译程序的不同而不同,因此使用位域会影响程序的可移植性,在不是非要使用时最好原创 2006-12-17 19:18:00 · 819 阅读 · 0 评论 -
关于寄存器变量:
设置寄存器变量的目的是为了提高对有关变量的存取速度,存取寄存器的速度要比存取内存单元快得多。如,一个循环语句的控制变量可以声明为寄存器变量,一般变量不能说明为寄存器变量。只有局部变量和形式参数可以说明为寄存器变量,全局变量不能说明成寄存器变量,即在函数外的说明中不能使用register修饰符。寄存器的地址是不可存取的,因此不管一个寄存器变量实际上是否分配在寄存器中,都不能在程序中使原创 2006-12-17 19:24:00 · 1288 阅读 · 0 评论 -
带可变参数函数的定义
C语言专门提供了一个头文件stdarg.h或在unix中的vrargs.h。主要是声明一个预定义类型va_list以及三个预定义带参数宏va_start、va_arg和va_end。为了能在带可变参数函数体中访问可变参数,必须先说明一个va_list类型的变量。该变量存储了可变参数的信息,其初值通过va_start宏指定,然后通过调用va_arg宏对该变量分离出各个可变参数的值。所有原创 2006-12-17 19:10:00 · 947 阅读 · 0 评论 -
关于字符指针和字符数组的小问题
char *p="hello world";char a[]="hello world";字符数组a和指向字符串的指针p,两者都需要在内存静态数据区空间存储一个字符串常量”hello world”。但是指针变量直接指向该静态数据区的常量字符串的起始地址,并且以后不能修改字符串的值;而初始化数组时需要将字符串的所有字符拷贝到栈区的存储空间,并且让字符数组的起始地址指向栈区字符串的起始地址,以后数原创 2006-12-18 10:50:00 · 663 阅读 · 0 评论