char chArray[30];
这将创建一个 30 chars 的数组,其基地址与&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()