C++ 指针数组中将有多少内存分配
在以下声明中:C++ 指针数组中将有多少内存分配,c++,c,memory,C++,C,Memory,在以下声明中: char *myarray[] = {"Amir"}; 对于指针myarray[],分配了多少字节的内存?这取决于操作系统体系结构。因为它是一个char*的数组,所以在本例中,它的大小相当于一个指针 对于32位寻址,需要4个字节 64位寻址,将花费8字节。C和C++都放置空终止符。@ USER881301在发布答案后,我才发现它是“代码> char *数组,而不是字符数组。很抱歉。@KunalPurichar的大小始终为1=1字节。@KunalPuri现在您将进一步了解:“C
char *myarray[] = {"Amir"};
对于指针myarray[],分配了多少字节的内存?这取决于操作系统体系结构。因为它是一个char*的数组,所以在本例中,它的大小相当于一个指针 对于32位寻址,需要4个字节
64位寻址,将花费8字节。
C和C++都放置空终止符。@ USER881301在发布答案后,我才发现它是“代码> char *<代码>数组,而不是字符数组。很抱歉。@KunalPurichar
的大小始终为1=1字节。@KunalPuri现在您将进一步了解:“C++内存模型中的基本存储单元是字节。一个字节至少足以包含基本执行字符集(5.3)的任何成员Unicode UTF-8编码格式的八位代码单元,由一个连续的位序列组成,其数目是定义的实现。“C或C++实现可以选择字节中的位数,但它不会改变身份字节===字符类型。<代码> MyLaule[] /Code >不是指针。它实际上什么都不是,因为myarray[]
不是左值,它只是一个声明器语法myarray
是一个数组,myarray[0]
是一个指针myarray[0]
指向字符串文本的第一个元素。在目标系统中,使用代码< > sisiOf的东西< /代码>,得到了<代码> > />代码。它会说什么?记住要考虑到它是非法的,编译器错误,在现代C++中将一个字符串文字(<代码> const char [] /代码>)分配给非代码> const < /Cux>指针。因此我相信C++标签是错误的…但谁知道呢。还有,什么是Char?@AnttiHaapala我想OP的意思是说Char
,而不是chart。我想这是OP想澄清的另一件事。