c
steven_yzx
天行健,君子以自强不息!地势坤,君子以厚德载物!
展开
-
va 家族(可变参家族)
#include #include voidva_fun(int i, ...){ va_list arg_ptr; int j=0; va_start(arg_ptr, i); j=va_arg(arg_ptr, int); va_end(arg_ptr); printf("%d %d\n", i, j);原创 2012-03-29 23:25:32 · 957 阅读 · 0 评论 -
GCC 警告提示
GCC 警告提示本节主要讲解GCC的警告提示功能。GCC包含完整的出错检查和警告提示功能,它们可以帮助Linux程序员写出更加专业和优美的代码。我们千万不能小瞧这些警告信息,在很多情况下,含有警告信息的代码往往会有意想不到的运行结果。首先可以先看一下以下这段代码:#includevoid main(void){long long tmp = 1;转载 2012-12-27 14:03:43 · 9632 阅读 · 1 评论 -
sscanf() 函数用法
sscanf格式中包含类似正则表达式: format-type中有%[]这样的type field。如果读取的字符串,不是以空格来分隔的话,就可以使用%[]。 %[]类似于一个正则表达式。[a-z]表示读取a-z的所有字符,[^a-z]表示读取除a-z以外的所有字符。 1.读取时间字符串 sscanf("2006:03:18 - 2006:04:18", "原创 2012-10-12 11:49:56 · 1033 阅读 · 0 评论 -
获取不小于某个数,且是另一个数的最小公倍数
#define CEILING_2_POWER(x,a) ( ((x) + ((a) - 1) ) & ( ~((a) - 1) ) )void t_c(){ printf("xxx:%d\n",CEILING_2_POWER(44, 16));} 猜猜这个宏能完成什么功能! 是不是很经典原创 2012-09-20 17:03:50 · 3029 阅读 · 4 评论 -
数组指针和指针的一个经典例子
//猜猜程序的输出结果,why?#include int main(){ int a[5] = {1,2,3,4,5}; int *p = (int*)(&a + 1); printf("%d, %d\n", *(a + 1), *(p -1));}原创 2012-08-10 11:09:19 · 825 阅读 · 1 评论 -
判断系统是32位还是16位
int a = ~0;if( a>65536 ) { cout}else{ cout}原创 2012-08-10 09:03:26 · 1127 阅读 · 1 评论 -
数组越界的几个经典范例
//1.下面代码有什么错误?Void test1() { char string[10]; char *str1="0123456789"; strcpy(string, str1); } //--------------------------------------------------------------------------2.下面代原创 2012-08-10 08:54:57 · 1396 阅读 · 0 评论 -
#error 宏定义
宏定义#error#error token-sequence其主要的作用是在编译的时候输出编译错误信息token-sequence从方便程序员检查程序中出现的错误。该指令用于程序的调试, 当编译中遇到#error指令就停止编译。#define CONST_NAME "const name"printf("%s\n",CONST_NAME);#undef CO原创 2012-07-24 09:33:48 · 5831 阅读 · 0 评论 -
c 零值比较
<!--@page {margin:2cm}p {margin-bottom:0.21cm}-->bool , 指针变量 ,float 与“零值”比较的 if 语句bool 类型if ( flag )if ( !flag )指针类型if (p == NULL)if (p != NULL)float 类型onst原创 2012-04-18 23:17:14 · 1005 阅读 · 0 评论 -
c 语言头文件的那些事
#ifndef __APT_PTHREAD_H__#define __APT_PTHREAD_H__#ifdef __cplusplusextern "C" {#endif#include #include #ifdef __cplusplus} /* extern "C" */#endif#endif /* __APT_PTHREAD_H__ */1.防止头文原创 2012-03-22 23:02:22 · 1239 阅读 · 1 评论 -
c语言知识点补遗
使用C很长时间,但是很难说对c的各个点都十分的透彻。虽然c不像c++那样复杂,但是还有很多叽里旮旯儿:并不是他们有多难,而是在于他们平时用的不多,或者和人的第一直觉相悖,再或者初学时经验有限理解不深根本没有记住。下面的这些东西可能来自《c专家编程》或者网络。最近发现基础的经典的书籍常读常新,原因可能有两个:1、随着自己经验的增长,你的认识可能会不一样,思维的方式也会有所变化,而得到的东西自转载 2012-04-10 12:42:06 · 689 阅读 · 0 评论 -
c 语言数组
#include voidarry_init(){ char c_arry_a[10] = {'a','b', 'c', 'd'}; char c_arry_b[10] = {"abcd"}; char cp_arry_c[2][10] = {"hello", "friend"}; char *cp_arry_d[10] = {NULL}; char原创 2012-04-09 23:27:21 · 636 阅读 · 0 评论 -
Linux c 的可变长数组
#include #include #include static char arry_b[0];void lengthen_arry(int n){ const char *head = "headstr-"; const char *tail = "tailstr"; char arr[n+1]; char vla[str原创 2012-03-19 23:49:26 · 6223 阅读 · 1 评论 -
c inline 属性
本文介绍了GCC和C99标准中inline使用上的不同之处。inline属性在使用的时候,要注意以下两点:inline关键字在GCC参考文档中仅有对其使用在函数定义(Definition)上的描述,而没有提到其是否能用于函数声明(Declare)。从inline的作用来看,其放置于函数声明中应当也是毫无作用的:inline只会影响函数在translation unit(可以简单理解为C源码转载 2013-01-17 10:36:45 · 881 阅读 · 0 评论