导航

随笔分类 -  C love

摘要:转自:http://blog.csdn.net/sunboy_2050/article/details/65667391. __attribute__ GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)__attribute__前后都有两个下划线,并且后面会紧跟一对原括弧,括弧里面是相应的__attribute__参数__attribute__语法格式为:__attribute__ ( ( att 阅读全文

posted @ 2013-03-10 19:43 vivi_wind 阅读(146) 评论(0) 推荐(0)

摘要:转自:http://www.cnblogs.com/flying_bat/archive/2008/01/18/1044693.html在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。1. do...while(0)消除goto语句。 通常,如果在一个函数中开始要分配一些资源,然后在中途执行过程中如果遇到错误则退出函数,当然,退. 阅读全文

posted @ 2013-03-03 19:31 vivi_wind 阅读(232) 评论(0) 推荐(0)

摘要:http://blog.csdn.net/icmmed/article/details/6336613int main(int argc, char* argv[])argc是命令行参数的个数(程序路径自身也是一个参s数),argv字符指针数组中就保存了指向各个参数字符串的指针(程序路径是第一个参数,由argv[0]指向)。比如一个main.c文件里面的main函数定义如上所示,那么当在命令行模式下执行main.c生成的main.exe文件时,格式如下:main.exe aaa bbb ccc那么:argc=4argv[0]="main.exe"argv[1]=" 阅读全文

posted @ 2012-09-05 14:29 vivi_wind 阅读(2861) 评论(0) 推荐(0)

摘要:http://blog.csdn.net/kuanxu/article/details/7454081今天在代码中看到print语句有%p,想了半天愣是想不出它来打印什么数据类型。通常情况下打印log或者调用sprint等语句,%d, %s, %i等是比较常用的,而如%p,%x等很少见,所以有必要温习一下print函数来了解各种%值得意义。Printf(xxxxx)功 能: 产生格式化输出的函数用 法: int printf(constchar *format,[argument]); format 参数输出的格式,定义格式为:%[flags][width][.perc] [F|N|h|l]t 阅读全文

posted @ 2012-09-04 16:29 vivi_wind 阅读(1027) 评论(0) 推荐(0)

摘要:http://topic.csdn.net/u/20071210/14/321d6ec5-f967-4afb-8d04-b335e6db7b34.html不允许这里修改不代表不允许别处修改,再比如:int i = 5;const int* p = &i;*p = 6; // 不可以;i = 7; // 完全可以,而且那个“const”的“*p”也跟着变成了7。const和volatile放在一起的意义在于:(1)本程序段中不能对a作修改,任何修改都是非法的,或者至少是粗心,编译器应该报错,防止这种粗心;(2)另一个程序段则完全有可能修改,因此编译器最好不要做太激进的优化。“const” 阅读全文

posted @ 2012-09-04 08:48 vivi_wind 阅读(2201) 评论(0) 推荐(0)

摘要:在阅读本文之前,希望读者对WINDOWS下程序的运行方式以及内存管理机制有基本的了解。 一、NULL指针和零值指针(null pointer and zero value pointer) 我们查看一下C++标准库定义的NULL指针 // Define NULL pointer value #ifndef NULL # ifdef __cplusplus # define NULL 0 # else # define NULL ((void *)0) # endif #endif // NULL... 阅读全文

posted @ 2012-09-03 10:42 vivi_wind 阅读(375) 评论(0) 推荐(0)

摘要:原文地址:signed和unsigned之间作者:smart这样一个题,据说是微软面试题:unsigned int i=3;cout<<i * -1;问结果是多少。第一反应:-3。不过结果似乎不是这样的,写了个程序,运行了一下,发现是:4294967293。很诡异的一个数字,怎么也想不明白为什么会是这么个奇怪的数字。但是在我发现这数的十六进制数是FFFFFFFD时,我想我已经离答案很近了...这个涉及到了混合着不同数据类型的表达式中的数据类型的转换问题。在总结转换问题之前,先说明一下各种数据类型(只说明numeric类型的),下表来自MSDN:Type NameBytesOther 阅读全文

posted @ 2012-09-02 21:37 vivi_wind 阅读(751) 评论(0) 推荐(0)

摘要:转自http://www.cnblogs.com/ggzss/archive/2011/08/18/2145017.htmlassert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include <assert.h>void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c:#include <stdio.h> 阅读全文

posted @ 2012-08-19 09:05 vivi_wind 阅读(316) 评论(0) 推荐(0)

摘要:转自http://www.cnblogs.com/zxl2431/archive/2011/03/25/1995894.html1.多维数组元素的地址 关于这个我只是想说:骑白马的不一定是白马王子,还有可能是唐僧。 搞清多维数组的地址表示是最基本的,例如一个3*4的多维数组 a[3][4]={{1,3,5,7},{2,4,6,8},{9,11,13,15}}; 显然 a 是一个数组名,首先 a 中的一级元素并不是具体的数,而是3个一维数组( 即3行 a[0] , a[1] , a[2] )这三个元素每一个下面又包括 4 个元素 a[0][0],a[0][1],a[0][2],a[0][3... 阅读全文

posted @ 2012-08-16 16:00 vivi_wind 阅读(243) 评论(0) 推荐(0)

摘要:转自http://www.cnblogs.com/evisie/archive/2011/08/04/2128051.html先看一个例子:struct student{ char* name; int score;}stu, *pstu;int main(void){ strcpy(stu.name, "Jimy"); stu.score =99; return0;}这是很多人都容易犯的错误:定义了结构体变量stu,但结构体内部的char * name在定义结构体时只是为其分配了4字节的内存,没有指向一个合法的地址,这时其指针指向的区域只是一些乱码,有事还没有访... 阅读全文

posted @ 2012-08-14 20:38 vivi_wind 阅读(10453) 评论(0) 推荐(1)