![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言深究
百无成
让我们一起学习
展开
-
关于大小端的经典问题
源代码如下:#include <stdio.h>int main(){ int a[5] ={1,2,3,4,5}; int *ptr1 = (int*)(&a+1); int *ptr2 = (int*)((int)a+1); printf("%x ,%x\n",ptr1[-1],*ptr2); return 0;}结果输出:思考?为什么呢?主要涉及的原创 2017-08-21 14:31:03 · 306 阅读 · 1 评论 -
关于#define宏的生命周期
我们一起来看一段代码:#include <stdio.h>#define X 3#define Y X*5#undef X#define X 2int main(){ int z =Y; printf("%d",z);}这段代码的输出是多少呢?15?10? 答案是为什么呢?解析:宏的生命周期从#define 开始到#undef 结束。所以#define X 3在#u原创 2017-08-22 22:09:47 · 1568 阅读 · 1 评论 -
#pragma pack(push,1)与#pragma pack(1)的区别
pragma pack(push,1)与#pragma pack(1)的区别 这是给编译器用的参数设置,有关结构体字节对齐方式设置, #pragma pack是指定数据在内存中的对齐方式。pragma pack (n) 作用:C编译器将按照n个字节对齐。pragma pack () 作用:取消自定义字节对齐方式。pragma pack (p转载 2017-08-23 21:36:29 · 226 阅读 · 0 评论 -
结构体数据对齐
结构体数据对齐 结构体数据对齐,是指结构体内的各个数据对齐。在结构体中的第一个成员的首地址等于整个结构体的变量的首地址,而后的成员的地址随着它声明的顺序和实际占用的字节数递增。为了总的结构体大小对齐,会在结构体中插入一些没有实际意思的字符来填充(padding)结构体。 在结构体中,成员数据对齐满足以下规则: a、结构体中的第一个成员的首地址也即是结构体变量的首地址。 b、结转载 2017-08-23 15:33:27 · 2720 阅读 · 0 评论 -
关于char的溢出问题
现在看下面的问题int main(){ char number = 129; printf(“number=%d\n”, number); return 0;}结果为什么是-127?int main(){ char number = -129; printf(“number=%d\n”, number); return 0;}结果为什么是1原创 2017-09-18 09:21:52 · 8074 阅读 · 2 评论 -
exit()和_exit()的区别
exit.c源代码:#include#include int main(void){ printf("Using exit...\n"); printf("This is the content in buffer"); exit(0);}输出信息: Using exit… This is the content in buffer_exit()源代码:#incl原创 2017-11-03 20:40:56 · 367 阅读 · 0 评论