77范文网 - 专业文章范例文档资料分享平台

C专家编程看书笔记(6)

来源:网络收集 时间:2021-01-20 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

C专家编程学习中的笔记

台可以实际进行测试,得出相应结果。)
struct node_tag{
char test0;
short test1;
int test2;
char test3;
int test4;
short test5;
};
sizeof(struct node_tag) = 20;虚拟机也是20。

struct node_tag{
char test0;
int test1;
double test2;
char test3;
double test4;
};
sizeof(struct node_tag) = 32;虚拟机是28。这个是分配单元的区别,VC++6.0以8字节,虚拟机上是以4字节。
从这里可以知道,在编写结构体时,我们可以恰当的组织数据类型的顺序,可以节省存储空间。我想,结构体我应该比较明白了吧。

P164
看到共用体,扩展测试:
同理关于共用体,《C语言程序设计》<谭浩强>(第三版)P309
共用体变量所占的内存长度等于最长的成员的长度。这是错误的。
union test{
char a[10];
int i;
}u;
sizeof(u) = 12.
union test{
char a[10];
double i;
}u;
sizeof(u) = 16.
同样,要求字对齐。
union test{
char a[17];
double i;
}u;
sizeof(u) = 24.
union test{
char a[17];
double i;
}u;
sizeof(u) = 20.注意,以8字节为分配单位。

enum test{sun,mon,tue,wed,thu,fri,sat} workday;
sizeof(workday) = 4;
workday只是前面7个值中的某一个,只占4个字节。

P164
union { char a[10];
int i;
} u;
int *p = (int*) &(u.a[1]);
*p = 17; /* the misaligned addr in p causes a bus error! */中文版上的相应代码看不清楚,下了一个英文版的
通过在虚拟机上的测试和VC++6.0上的测试,并未出现所说的错误。我想可以是现在的编译器和作者当时的编译器有所不同。
测试代码如下:
#include "stdafx.h" //虚拟机中直接是#include<stdio.h>

union test{
char a[10];
int i;
}u;

int main(int argc, char* argv[])
{
int *p = (int*) &(u.a[1]);
*p = 17;
printf("union = %d\n",&u);
printf("&(u.a[1]) = %d\n",&(u.a[1]));
printf("*p = %d\n",*p);
return 0;
}
VC++6.0结果是:
union = 4339408
&(u.a[1]) = 4339409
*p = 17
虚拟机上结果是:
union = 134518272
&(u.a[1]) = 134518273
*p = 17

P164
int *p = 0;
*p = 17; /* 引起一个段错误 */
编译不会报错,但运行时会报错。段错误是由于内存管理单元(负责支持虚拟内存的硬件)的异常所致,而该异常则通常是由于解除引用一个未初始化或非法值的指针引起的。如果指针引用一个并不位于你的地址空间中的地址,操作系统便会对此进行干涉。
int *p = 0;这里是指针的声明,p的值是地址,将0赋给p。这里赋值只能是0,不能是其它值,否则会报错:'initializing' : cannot convert from 'const int' to 'int *'。这什么只能是0?因为0就是NULL,代表指针指向一个空值。
#include "stdafx.h"

int main(int argc, c
har* argv[])
{
int *p = 0;
printf("&p = %d\n",p);
//printf("*p = %d\n",*p);
/* 有这一句的话
编译没有错误,没有警告。
运行结果:
&p

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库C专家编程看书笔记(6)在线全文阅读。

C专家编程看书笔记(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/1182054.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: