C语言
ANTRK
面朝大海,春暖花开
展开
-
C语言的那些小秘密之字节对齐
可能有不少读者会问,字节对齐有必要拿出来单独写一篇博客嘛?我觉得是很有必要,但是它却是被很多人所忽视的一个重点。那么我们使用字节对齐的作用和原因是什么呢?由于硬件平台之间对存储空间的处理上是有很大不同的,一些平台对某些特定类型的数据只能从某些特定地址开始存取,如通常有些架构的CP转载 2011-07-27 11:24:24 · 650 阅读 · 0 评论 -
地址与指针
#include#includeusing namespace std;void main(){int *pa=NULL;int *pb=pa+15;printf("%x",pb);} 输出结果是3cint *pa=NULL; //pa指向空,地址为0x00000000int *pb=pa+15; //pb的地址为pa向后移动15个位置(pa、pb指原创 2012-10-17 10:31:23 · 470 阅读 · 0 评论 -
关于UNION联合体
原题目:-------------------------------------------------------------------------------------------------------------#include using namespace std ;union{ unsigned char a; unsigned int i转载 2012-10-17 10:36:03 · 608 阅读 · 0 评论 -
strlen与sizeof区别
strlen用来求字符串的长度用的而sizeof是用来求指定变量或者变量类型等所占内存大小用的比如strlen("nihao")它的结果是5而sizeof(int)它的结果是4也就是说int型占四个字节 char str[20]="0123456789";int a=strlen(str); //a=10;int b=sizeof(str); //而b=20;原创 2012-08-28 16:31:51 · 490 阅读 · 0 评论 -
printf函数
#includeint main(){int a = 3;printf("%d,%d",a,a++);//输出 4 3return 0;}printf函数是从左往右读取,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所有我们看见的结果是,从右边开始处理的原创 2012-08-28 16:16:24 · 391 阅读 · 0 评论 -
sizeof
《程序员面试宝典》看到了sizeof(string)这个问题。string strArr1[]={"Trend", "Micro", "Soft"};sizeof(strArr1)=12关于sizeof(string),今天看那本面试宝典的时候看到这个表达式,有点吃惊,书上写着sizeof(string)=4;当时很纳闷,难道分配4个字节大小的内存给string吗?查阅了相关资料得出结转载 2012-09-01 20:40:45 · 619 阅读 · 0 评论 -
宏定义中的参数需要加括号的原因
加括号是为了处理表达式参数(即宏的参数可能是个算法表达式)时不出错,因为宏替换就是文本替换,所以如果有以下情况:#define COM(A,B) (A)*(B)那么COM(6+5,3)这个调用会怎么替换呢?它会换成这样:(6+5)*(3)显然这是和COM宏的意图一致的,但是如是去掉了定义中括号,即写成这样:#define COM(A,B) A*B那么转载 2012-08-29 10:29:37 · 2877 阅读 · 1 评论 -
如何解释 #define FIND(struc, e) (size_t) &(((struc*) 0)->e)
用一个宏定义FIND求一个结构体struc里某个变量相对struc的偏移量。struct struc{ int a;char b[20];double ccc;};则 struc studentFIND(student,a);//等于0FIND(student,b);//等于4答案:#define FIND(struc, e) (size_t) &(((s原创 2012-08-29 10:16:03 · 2176 阅读 · 0 评论 -
typedef struct与struct的区别
1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。 至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。 2.转载 2012-07-23 10:57:19 · 496 阅读 · 0 评论 -
CString 转换成TCHAR *的方法
方法一,使用强制转换。例如:CString theString( "This is a test" );LPTSTR lpsz =(LPTSTR)(LPCTSTR)theString; 方法二,使用strcpy。例如:CString theString( "This is a test" );LPTSTR lpsz = new TCHAR[theString.G转载 2014-12-31 10:10:01 · 1275 阅读 · 0 评论