- 博客(20)
- 资源 (41)
- 收藏
- 关注
转载 C函数返回局部变量
一般的来说,函数是可以返回局部变量的。 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指向的内容就是不可预料的内容,调用就会出错。准确的来说,函数不能通过返回指向栈内存的指针(注意
2012-08-27 10:51:39 1252
原创 C无符号数和有符号数探讨
C 、C++都支持有符号(默认)和无符号数,java只支持有符号数。整数表示:无符号整数:无符号编码 有符号数:补码(范围不对称),| TMIN |=| TMAX |+1C语言标准并没有要求用补码形式来表示有符号数,但是几乎所有的机器都是这么做的C标准只规定了每种数据类型必须能够表示的最小的取值范围而不是确定范围。long long是ISO
2012-08-23 15:30:44 4799 1
转载 字符集及其编码
编码指不同国家的语言在计算机中的一种存储和解释规范 ANSI(American National Standards Institute的缩写)与ASCII(American Standard Code for Information Interchange的缩写) 最初,Internet上只有一种字符集——ANSI的ASCII字符集(American Standard
2012-08-21 15:06:59 791
转载 C 对于C语言可移植性的思考
我相信学过C语言的同学,都会在书中看到C语言特点一定有:可移植性。但是什么是可移植?如何才能可移植?C语言是如何做到可移植的?对于初学者,可移植可能是一个经常遇到却很神秘的词。我想通过这篇文章来表达我对于可移植性的一些想法。 首先,在这里铺垫一下。学过Win32程序设计的人肯定都听说过API(Application Program Interface)。我就先说说API,高手绕过。API
2012-08-19 14:30:38 2777
转载 C可变参数
(一)写一个简单的可变参数的C函数下面我们来探讨如何写一个简单的可变参数的C函数.写可变参数的C函数要在程序中用到以下这些宏:void va_start( va_list arg_ptr, prev_param );type va_arg( va_list arg_ptr, type );void va_end( va_list arg_ptr );
2012-08-19 11:44:16 826
转载 一个合格的程序员应该读过哪些书
编者按:2008年8月4日,StackOverflow 网友 Bert F 发帖提问:哪本最具影响力的书,是每个程序员都应该读的?“如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本, 你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西。”很多程序员响应,他们在推荐时也写下自己的评语。 以前就有国内网友介绍这个程序员书单,不过都是
2012-08-18 20:28:04 1039
原创 C一个简单的通配符匹配实例
通配符是用来通配的,不同的系统上通配符不一样,例如:SQL中有“_”通配符(仅替代一个字符) 与“%”通配符(替代一个或多个字符),须与LINK运算符一起使用。此处仅考虑通配符*和?,*表示0或任意多个字符,?表示单个字符。int match(char *pat,char *str){switch(*pat){case ‘\0’ return !*str;
2012-08-18 16:29:23 4039
转载 C函数printf和函数scanf的转换说明符中实现可变的字段宽度
printf实现可变的字段宽度:scanf实现可变的字段宽度:注:转义字符所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了转义字符意义ASCII码
2012-08-17 16:35:37 2066
转载 C 字节序
字节序是指多字节数据在计算机内存中存储顺序存在两种字节顺序:NBO与HBO 网络字节顺序NBO(Network Byte Order): 按从高到低的顺序存储,在网络上使用统一的网络字节顺序,可以避免兼容性问题。 主机字节顺序HBO(Host Byte Order): 不同的机器HBO不相同,与CPU设计有关 计算机数据存储有两种字节优先顺序:高位字节优先和
2012-08-16 21:17:55 2983
原创 C 关于C中布尔类型的总结
c语言没有正式的、内建的布尔类型,一般用整数表示布尔值,只不过其范围大大缩小了,部分原因在于选择一个这样的类型涉及最好由程序员来决定的空间和时间中,使用int可能更快,选择char可能更节省空间。c语言将0值解释为假,而将任何非0值解释为真,ANSI规定关系和逻辑操作符==、!=、、>=、通常自定义的布尔型形式:#define TRUE 1#define FALSE 0type
2012-08-16 10:35:35 2236
转载 C malloc中典型问题
注意:问题中的int占16位,计算中间结果时造成整数溢出,当然现在机器一般都32位机器(机器字长为32),这个问题一般可以忽略,只是记录在此,以示提醒。
2012-08-15 21:34:17 1154
转载 C 空指针(NULL)与0的区别
空指针常量,ANSI规定:规定预处理宏NULL 为空指针常量,通常#define NULL 0或(void *)0误区:有的机器不同类型的指针使用不同的内部表示,例如将字符指针的空指针常量定义为#define NULL ((char *)0),这样的NULL定义对于接受字符指针的函数没有问题,但对于其他类型的指针仍然需要进行显示的转换,本来合法的构造可能会失败,例如FILE *fp=NULL;
2012-08-15 15:02:08 4315
转载 C 表达式未定义探究
C标准没有明确说明的情形都是未定义操作,此时操作是否成功以及一切细节由编译器自行决定基于表达式的语言,表达式内如果对同一变量操作两次以上,则请小心操作顺序,如果语言标准没有规定,则操作顺序未定义例子1:a[i] = i++未定义的例子2:a ^= b ^= a ^= b不用临时变量就能交换a和b的值,但是实际上这个也是未定义的,以上两个例子会因为不同的编译器得到不同的答案。、
2012-08-14 10:01:59 884
转载 C 关于sizeof的典型错误
例子:file1.c file2.cint a[]={1,2,3} extern int a[];在文件file1.c中定义一数组,在文件file2.c中extern声明,但file2.c中调用sizeof()得不到数组的大小因为未指定大小的extern数组是不完全类型,不能对
2012-08-13 15:49:59 1650
转载 C关于typedef的两个典型错误!
1:对于用户定义类型,typedef与#define的区别:一个是类型定义(定义一个新的类型),另一个是宏定义(简单的文本替换),一般来说最好使用typedef,部分原因是它能够正确处理指针类型,例如,考虑以下声明:typedef char * string_1;#define string_2 char *;string_1 s1,s2;string_2 s3,s4;s1
2012-08-13 09:49:01 3940
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人