
C++ 习题(2021.05.05)
发布日期:2021-05-08 06:01:49
浏览次数:25
分类:原创文章
本文共 1056 字,大约阅读时间需要 3 分钟。
1. 指针空间初始化
下面指针p1, p2申请的空间是随机还是已经标准化?
int *p1 = new int[10];int *p2 = new int[10]();
答: p1 申请的空间是随机值, p2 申请的空间已初始化
对于内置类型而言:
new仅仅是分配内存,并不进行初始化,除非在后面显式地加上 ()
对于自定义类型而言:
只要一调用new,那么编译器不仅给他分配内存,还会调用它的默认构造函数初始化即使后面没有加(), 初始化是将内存空间填0
2. 函数外初始化
函数外部访问x等于什么?
enum string{ x1, x2, x3=10, x4, x5, } x;
答: 0
函数外定义是0,全局变量定义时编译器会为其初始化
函数内定义,是随机值,因为没有初始化
3. 指针运算
请问
p1+5=?
请问
p2+5=?
unsigned char *p1;unsigned long *p2;p1=(unsigned char *)0x801000;p2=(unsigned long *)0x810000;
答:
0x801005
,0x810014
一个char占一个字节, 一个long占四个字节
对一个指针做加运算, 计算方式:
p_a + n * sizeof(type_p)
, 即所加之值要乘以类型所占字节
4. sizeof
下面程序的输出是?
void example(char acWelcome[]){ printf("%d",sizeof(acWelcome)); return;}void main(){ char acWelcome[]="Welcome to Huawei Test"; example(acWelcome); return;}
答:
4
对于字符数组
char arr[]="abcd"
,sizeof(arr)
代表的是字符数组所占的字节数目(包括结尾\0
), 但对于char arr[20]="a"
而言,sizeof(arr)
的值就是20, 对于strlen(arr)
而言,求得的长度是字符串的长度(以\0
作为结束符), 前面的例子中strlen
分别输出4和1对于字符指针
char *s="0123"
而言,sizeof(arr)
单纯代表字符指针本身所占的字符数目,即4个字节.strlen(arr)
对于字符指针仍然是求得字符串长度不变
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月04日 22时31分04秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
go等待N个线程完成操作总结
2019-03-06
ReactJs入门教程-精华版
2019-03-06
Python 之网络式编程
2019-03-06
MySql5.5安装步骤及MySql_Front视图配置
2019-03-06
Java内存模型(JMM)
2019-03-06
AQS相关
2019-03-06
WCF学习之旅—第三个示例之一(二十七)
2019-03-06
java ThreadPoolExecutor初探
2019-03-06
快速指数算法
2019-03-06
python去除字符串中的特殊字符(爬虫存储数据时会遇到不能作为文件名的字符串)
2019-03-06
SpringCloud微服务(03):Hystrix组件,实现服务熔断
2019-03-06
Spring 框架基础(01):核心组件总结,基础环境搭建
2019-03-06
Cassandra数据建模
2019-03-06
Internet Explorer 10 专题上线
2019-03-06
云计算之路-阿里云上:0:25~0:40网络存储故障造成网站不能正常访问
2019-03-06
网站故障公告1:使用阿里云RDS之后一个让人欲哭无泪的下午
2019-03-06
上周热点回顾(6.3-6.9)
2019-03-06
上周热点回顾(8.12-8.18)
2019-03-06