C++简答题 求答案

2025-03-05 02:24:04
推荐回答(2个)
回答1:

1. 一个基本的规则,以*为界,const在*之前,表示指针指向的内容不能修改,const在*之后表示指针本身不能修改。
const char *p // 指针本身可以修改,指针指向的内容不能修改。
char const *p // 指针本身可以修改,指针指向的内容不能修改。与上一个一样。
char * const p // 指针本身不能修改,指针指向的内容可以修改。
const char * const p // 指针本身和他指向的内容都不能修改。
2. 字符串结束需要一个\0来表示,所以字符串所占的内存长度是字符个数+1,这里str1有10个字符,需要11个字节来保存,而string只有10个字节,所以拷贝的时候会内存越界。

回答2:

(1)const char *p;*p为只读常量,p可变;
(2)char const *p;与(1)相同;
(3)char * const p;p为只读常量,*p可变。

2.string字符数组没有足够空间存放str1字符串常量。缺少空间存放‘\0’;
将char string[10]; 改为char string[11];