【发布时间】:2021-01-23 21:12:48
【问题描述】:
我有一些合并strcpy 数组和指针的代码。我不明白为什么代码显示"Good exam"。我看到在调用strcpy 之后,ptr 包含"lexam"。那么,您能解释一下a[] 的值何时发生变化吗?
char a[50] = "Good luck!";
char b[50] = { 'i','n',' ', 't','h','e',' ','e','x','a','m','\0' };
char* ptr = a + 5; cout << *ptr;
strcpy(ptr, &b[7]);
for (int i = 0; i < strlen(ptr); i++)
cout << ptr[i];
cout << a;
【问题讨论】:
-
改成
strcpy,果然如所料? “为什么代码显示它显示的“好考试””是什么意思? -
strcpy ptr 行后包含“lexam” -
ptr是一个指针,它包含一个地址;就是这样,具体来说,它包含数组a的基数的第五个字符的地址,所有strcpy所做的只是修改该地址所引用的内存,并且这样做,数组a的内容。
标签: c++ arrays pointers strcpy