
C语言 ANSI C
文章平均质量分 60
iteye_12894
这个作者很懒,什么都没留下…
展开
-
Printf 的问题
#include <stdio.h>int main (int argc, char *argv[]){printf ("%hhd\n", 0x100);printf ("%hhu\n", 0x100);return 0;} [mathieu@localhost mathieu]$ ./a.out00以下结果一样printf ("%hhd\n", 256);pri...2009-02-18 04:26:36 · 276 阅读 · 0 评论 -
C语言,结构体(struct) 用法
结构(struct) 结构是由基本数据类型构成的、并用一个标识符来命名的各种变量的组合。 结构中可以使用不同的数据类型。 [b]1. 结构说明和结构变量定义[/b] 在Turbo C中, 结构也是一种数据类型, 可以使用结构变量, 因此, 象其它类型的变量一样, 在使用结构变量时要先对其定义。 定义结构变量的一般格式为...原创 2009-03-15 19:52:05 · 200 阅读 · 0 评论 -
C语言的三种整型数据类型:int、short int和long int
int数据类型的位数为16位,short int数据类型的位数也是16位。而long int的位数为32位,可用来存储比较大的整数。 short int 和 long int可以缩写为short 和 long。 C语言中的整型数据类型int、short int 和 long int 名称全称类型说明符缩写类型说明符 位数 ...原创 2009-03-15 20:58:01 · 4561 阅读 · 1 评论 -
C语言中的可变参数函数 三个点“…”printf( const char* format, ...)
第一篇C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为:int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的(用三个点“…”做参数占位符),实际调用时可以有以下的形式:printf("%d",i); printf("%s",s); ...原创 2009-03-16 20:17:35 · 1230 阅读 · 1 评论 -
C/C++:函数参数传递方式
传递变量名,传递指针,传递引用。author: ZJ 07-12-5Blog: http://zhangjunhd.blog.51cto.com/下面介绍3种函数参数传递方式。1.将变量名作为形参和实参在这种情况下传给形参的是变量的值。传递是单向的,即如果在执行函数期间形参的值发生变化,并不传回给实参,这就是值传递方式。因为在调用函数期间,形参和实参不是同一个存储单元。...原创 2009-03-16 20:26:21 · 177 阅读 · 0 评论 -
数组作函数的参数 和 返回值return
同其它变量一样,数组也可以作函数的参数。数组元素只能作函数实参,且同其它变量的用法没有区别。 我们已经知道,数组元素要通过数组名和相应的下标一个个地引用,而数组名可以作函数的实参和形参。当数组作为函数参数时,调用函数中的实参数组只是传送该数组在内存中的首地址,即调用函数通知被调函数在内存中的什么地方找到该数组。在前面我们已经知道了函数参数的值传递方式,调用函数向被调函数传递数...原创 2009-03-16 20:40:05 · 457 阅读 · 0 评论 -
Array vs. Malloc: A C语言问题
code:int foo[256];和int *bar;bar = (int *)malloc(256*sizeof(int));foo 和 bar 功能上是相同的定义一个array。 foo被当成一个指针,bar作为一个数组. C甚至不检查数组的界限。两者不同之处是foo分配的内存会自动回收,当它所在的函数运行结束时,而bar的内存空间只有在使用fre...2009-03-16 23:57:51 · 119 阅读 · 0 评论 -
详细解析C语言中的sizeof
[b]一、sizeof的概念[/b] sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 [b]二、sizeof的使用方法[/b] 1、[b]用于数据类型[/b] siz...原创 2009-03-24 00:20:29 · 98 阅读 · 0 评论 -
C语言编程常见问题解答之指针和内存分配
指针为C语言编程提供了强大的支持——如果你能正确而灵活地利用指针,你就可以直接切入问题的核心,或者将程序分割成一个个片断。一个很好地利用了指针的程序会非常高效、简洁和精致。 利用指针你可以将数据写入内存中的任意位置,但是,一旦你的程序中有一个野指针(\"wild“pointer),即指向一个错误位置的指针,你的数据就危险了——存放在堆中的数据可能会被破坏,用来管理堆的数据结构也可能会...原创 2009-03-30 02:51:49 · 281 阅读 · 0 评论 -
C/C++:对指针进行操作的函数
先看个例子[code="c"]void add_array(int* a){ a += 2; printf("ths pointer is increase %d \n",a);}//int add(int x, int y); // forward declaration using function prototypeint main(){ int i...2009-04-03 03:37:21 · 219 阅读 · 0 评论 -
C语言常量的定义方法
常量是在程序运算过程中不变的量。 常量在程序中经常直接出现,如123、3.14159、‘a’、“computer”,此时只要求它们符合相应类型数据的表示方法。相应于各种数据类型,有整型常量、浮点型常量、字符型常量及字符串常量。 常量定义是指定义符号常量,用一个标识符来代表一个常量,通过宏定义预处理指令来实现。 格式:#define标识符常量 由用...原创 2009-03-14 23:47:42 · 1288 阅读 · 0 评论 -
typedef struct 和 typedef struct tagname 区别
在struct, union, 和 enum 的定义中tag name是可选项. 比如struct definition 使用typedef并忽略tag: [code="c"]typedef struct{...} T;[/code]这样完全没有错误,但是如果使用self-referential structures包含了他自己的pointers. 例如: ...2009-03-12 20:25:10 · 128 阅读 · 0 评论 -
基本的字节序
对于单一的字节(a byte),大部分处理器以相同的顺序处理位元(bit),因此单字节的存放方法和传输方式一般相同。对于多字节数据,如整数(32位机中一般占4字节),在不同的处理器的存放方式主要有两种,以内存中0x0A0B0C0D的存放方式为例,分别有以下几种方式:注: 0x前缀代表十六进制。 Big-endian一般称之为大端序或大尾序。数据以8bit为单位: 地址增长...原创 2009-02-22 03:22:29 · 135 阅读 · 0 评论 -
c/c++中#include <>与#include""区别
先去系统目录中找头文件,如果没有在到当前目录下找。所以像标准的头文件 stdio.h、stdlib.h等用这个方法。 而""首先在当前目录下寻找,如果找不到,再到系统目录中寻找。 这个用于include自定义的头文件,让系统优先使用当前目录中定义的。 When writing your C program, you can include files in two ...2009-02-28 22:45:30 · 219 阅读 · 0 评论 -
#ifdef and #ifndef
Preprocessor: #ifdef and #ifndefThe #ifdef (if defined) and #ifndef (if not defined) preprocessor commands are used to test if a preprocessor variable has been "defined". There are two common uses fo...原创 2009-03-01 01:53:59 · 420 阅读 · 0 评论 -
GNU C 扩展之__attribute__ 机制简介
GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。 __attribute__书写特征是:__attribute__前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应...原创 2009-03-04 04:44:44 · 112 阅读 · 0 评论 -
return 1 或 return 0 的作用
在C或C++中常有一些程序,结尾有不影响运行的 return 1或 return 0 .它们有什么作用? return 0是正常退出,return 非零 是异常退出,这是返回给控制台的,不在你编的程序的控制范围内,是给操作系统识别的,对你的程序无影响。如果是C中,定义void main()可以不用返回值。具体操作系统怎么处理0和非零我也不知道,也没必要了解,因为与你的程序无关。 void...原创 2009-03-07 01:43:23 · 3302 阅读 · 0 评论 -
ntoh16 与 hton16
/* * Functions hton16 and hton32 convert the host * representation of integer numbers into the network * representation as defined in "Trivial Internet Protocol", * section 2.1. * ntoh3...原创 2009-03-10 01:49:08 · 880 阅读 · 0 评论 -
c语言中的struct和union
[b] 联 合(union) [/b]1. 联合说明和联合变量定义 联合也是一种新的数据类型, 它是一种特殊形式的变量。 联合说明和联合变量定义与结构十分相似。其形式为: union 联合名{ 数据类型 成员名; 数据类型 成员名; ... } 联合变...原创 2009-03-10 04:22:46 · 397 阅读 · 0 评论 -
i++和++i的区别
如果有表达式 a = i++ 它等价于 a = i ; i = i + 1; 如果有表达式 a = ++i 它等价于 i = i + 1; a = i; 1 首先两者的区别是:前者是先赋值,然后再自增;后者是先自增,后赋值 2 ++i和i++都是分两步完成的。因为++i 是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,+...原创 2009-03-12 01:14:34 · 319 阅读 · 0 评论 -
C语言中typedef用法
[b] 1. 基本解释[/b] typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。 至于typedef有什么微妙之处,请你接着看下面对几个问题的具体...2009-03-12 19:42:12 · 115 阅读 · 0 评论 -
不用库函数,自己实现strcpy和memcpy函数
1.代码实现[code="c"]char* strcpy(char* strDest, const char* strSrc){ASSERT(strDest != NULL && strSrc != NULL);char* strTmpD = strDest;while ((*strTmpD++ = *strSrc++) != '0'){}return strD...原创 2009-04-04 02:52:35 · 174 阅读 · 0 评论