C++ 为什么一个字符在数组中占据的空间似乎比它本身要多 char testChar='a'; char myCharString[]=“asd”; char*pointerToFirstChar=&(myCharString[0]); char*pointerToSecondChar=&(myCharString[1]); 由于
C++ 为什么一个字符在数组中占据的空间似乎比它本身要多 char testChar='a'; char myCharString[]=“asd”; char*pointerToFirstChar=&(myCharString[0]); char*pointerToSecondChar=&(myCharString[1]); 由于,c++,pointers,char,memory-address,C++,Pointers,Char,Memory Address,&pointerToFirstChar和&pointertoseconchar,您获取的不是char数组元素的地址,而是局部变量pointerToFirstChar和pointertoseconchar的地址。注意,它们本身就是指针 您可能需要: char testChar = 'a'; char myCharString[] = "asd"; char *pointerToFirstChar = &(myCharString[0]); char *pointerToSecondChar
&pointerToFirstChar
和&pointertoseconchar
,您获取的不是char
数组元素的地址,而是局部变量pointerToFirstChar
和pointertoseconchar
的地址。注意,它们本身就是指针
您可能需要:
char testChar = 'a';
char myCharString[] = "asd";
char *pointerToFirstChar = &(myCharString[0]);
char *pointerToSecondChar = &(myCharString[1]);
cout << "A char takes " << sizeof(testChar) << " byte(s)";
cout << "Value was " << pointerToFirstChar << ", address: " << &pointerToFirstChar << endl;
cout << "Value 2 was " << pointerToSecondChar << ", address:" << &pointerToSecondChar << endl;
cout&pointerToFirstChar
和&pointertoseconchar
,您获取的不是char
数组元素的地址,而是局部变量pointerToFirstChar
和pointertoseconchar
的地址。注意,它们本身就是指针
您可能需要:
char testChar = 'a';
char myCharString[] = "asd";
char *pointerToFirstChar = &(myCharString[0]);
char *pointerToSecondChar = &(myCharString[1]);
cout << "A char takes " << sizeof(testChar) << " byte(s)";
cout << "Value was " << pointerToFirstChar << ", address: " << &pointerToFirstChar << endl;
cout << "Value 2 was " << pointerToSecondChar << ", address:" << &pointerToSecondChar << endl;
cout您正在查看指针pointerToFirstChar
和pointertoseconchar
的地址。它们是指向char的指针;比较它们的值,它们将相差1。您似乎已经在文本中编辑掉了它。您正在查看指针pointerToFirstChar
和pointertoseconchar
的地址。它们是指向char的指针;比较它们的值,它们将相差1。您似乎在文本中已将其编辑掉。您正在打印指针变量的地址,而不是指针当前所在的地址
例如:
pointerToFirstChar=0xF8C2的地址,它保存地址&myCharString[0]=0xFE20
所以您正在打印0xF8C2,而不是打印0xFE20
按如下方式更新代码以获得正确的结果
cout您正在打印指针变量的地址,而不是指针当前所在的地址
例如:
pointerToFirstChar=0xF8C2的地址,它保存地址&myCharString[0]=0xFE20
所以您正在打印0xF8C2,而不是打印0xFE20
按如下方式更新代码以获得正确的结果
cout您正在获取指针的地址。您正在获取指针的地址。@downvoter:请告诉我哪里错了,我可以改进它。@downvoter:请告诉我哪里错了,我可以改进它。
&myCharString[0] = 0xFE20
&myCharString[1] = 0xFE21
&myCharString[2] = 0xFE23
char *pointerToFirstChar = &(myCharString[0]);