C++ 大神稍微看一眼!

这两道题的答案应该是什么? 不会c++ 谢谢了!
图片说明

第二道题目,输出内容要看你的编译器环境是32位的还是64位的。如果是32位的,输出6:4:1:4,如果是64位的,则输出6:8:1:8。第一个cout,输出的是数组str的长度,world加上后面的\0结束符,长度为6,第二个cout,输出的是指针变量p的长度,指针类型在32位环境下长度为4,64位环境下长度为8,第三个cout,输出的是char类型的长度,为1,第四个cout,同样是输出指针类型的长度,为4或8。

打开以下两个网站的任意一个

https://tool.lu/coderunner/
https://ideone.com/

选择C++语言

把你的代码贴在代码区域

点运行

就有结果了。

第一道题代码有误,更改后代码如下
#include
using namespace std; //需要加上命名空间
const char *str = "vermrre";
int main()
{
const char *pstr = str;
cout << "The address of pstr is :" << pstr << endl;
return 0;

}


首先定义两个指向常量的指针str和pstr,并且将str的指针位置再赋值给psrt,最后将pstr指针指向的内容输出。

图片说明

第一题

图片说明
首先,你的代码少了“using namespace std”或者在每一个cout前加“std::”(新手建议用using namespace std,像我代码里写的,一劳永逸,之后的cout就能直接使用),因为使用到cout等标识符需要调用到标准命名空间“namespace std",
若少了上诉语句,就会报错[Error] 'cout' was not declared in this scope。
再来说答案的问题。
因为指针变量pstr指向指针变量str,然后指针变量str又指向字符串vermeer,字符串又可以看作字符数组,即等同于char str[]="vermeer"。
输出pstr等同于指向了输出这个字符数组的首地址,输出一个字符数组的首地址等同于输出从首元素下标到最后一个元素下标的所有元素,
所以输出结果为vermeer。

第二题

图片说明
第二题同理,也像第一题里少了using namespace std;然后,根据题意,main函数里的第一句应该去除"//test1",因为test1不是一个类型,
且不删除注释符"//"的话,数组str将未被定义,程序将会出错。
然后,使用malloc函数的时候,需要包含一个头文件#include 。
有的编译器规定必须有返回值,所以我把main函数的void改成int,不影响答案。
然后来说答案:
sizeof()函数会返回变量所占的内存空间大小,变量str是个字符数组,里面有"world”共6字符,一个char类型的元素占1字节,
所以6字符占6字节。
在C++中各类型的指针的所占的字节数是一样的,所以指针 p 占4字节。
因为变量 i 是char类型变量,所以占 1 字节。
指针 pp 和指针 p 同理,所以占 4 字节。