将双引号的字符串作为参数传递给函数时,在幕后会发生什么?该字符串在哪里分配内存?
如果我执行memcpy(ptr, "SINGH", strlen("SINGH")+1);
,则输出仅为SINGH
。多余的字节从哪里复制?
对于以下程序:
void func(char *ptr) {
memcpy(ptr, "SINGH", strlen("SINGH"));
cout << ptr << endl; /* Output is SINGHHELLO */
/* If I do memcpy(ptr, "SINGH", strlen("SINGH")+1); Output is SINGH only. From where does extra byte is copied from? */
}
int main() {
char str[11] = "HELLOHELLO";
char str2[10] = "ABC";
memcpy(str, "HELLO", strlen("HELLO")); /* Where is memory allocated for string 'HELLO' ? */
cout << str << endl << str2 << endl;
func(str);
return 0;
}
答案 0 :(得分:-1)
"something"
被称为字符串文字,它只是只读存储器中的字符序列(实际上是一个数组)。
当您调用任何需要使用指针类型为char的参数的函数时,此字符串文字(实际上是char数组)的地址将传递给该函数。