char chArray[30];
这将创建一个 30 char
s 的数组,其基地址与&chArray[0]
数组的第一个元素的地址相同,并且与您在执行操作时获得的地址相同chArray
(数组名称充当指针)
char chArray2[] = "this is working";
您正在创建一个常量字符串文字,并将其分配给chArray2
声明行。该数组的基地址&chArray2[0]
与您执行时相同并且相同chArray2
*chArray
将引用数组的第一个元素,因此将*chArray2
通过使用*
,您将第一个元素的值分配给而chArray2
不是chArray
address。
而且你不能/不应该这样做。
chArray
不是char*
您可以为其分配地址的类型指针char* p = chArray2
,而是它的类型char(*chArray)[30]
。地址是自动生成的。
当你这样做时std::cout
,它会打印垃圾,因为除了第一个字符之外没有分配任何东西chArray
(注意没有\0
标记字符串的结尾,所以在打印时打印垃圾)*chArray = *chArray2;
您需要使用 strcpy(chArray,chArray2);
正确复制chArray2
到chArray
如果您正在使用c++
(如标记),则可以使用std::string
它更容易更好。
string chArray;
string chArray2 = "this is working";
chArray = chArray2;
边注:
做了int main()