在C中按值传递字符串

Rio*_*Rio 2 c pointers

我有两个函数,一个用于创建指向字符串的指针,另一个用于操作它.然而,我错过了一些关键的东西:

int foo() {
   char * mystring; // Create pointer
   bar(&mystring); // Pass in address
   printf("%s\n", mystring);
   return 0; // There's a reason for this
}

int bar(char ** mystring) {
   mystring[0] = malloc(strlen(mystring) + 1); // Since malloc will persist even after exiting bar
   *mystring = "hahaha"; // Dereference
   return 0; 
}
Run Code Online (Sandbox Code Playgroud)

对我的大脑的任何启发都将非常感激!

gee*_*aur 6

C没有字符串作为第一类值; 你需要用来strcpy()分配字符串.

strcpy(mystring[0], "hahaha");
Run Code Online (Sandbox Code Playgroud)