Если это строковый литерал, вы можете сделать одно из следующих:
char *string = "abcd";
char astring[] = "abcd";
Если вы хотите знать это для последующего копирования строк, вы можете иметь буфер или выделить память, и место для '\ 0' необходимо, даже если strlen("abcd")
вернет 4, потому что не учитывает терминатор .
/* buffer way */
char string[5];
strcpy(string, "abcd");
/* allocating memory */
// char *ptr = malloc(5*sizeof(*ptr)); // question was retagged C++
char *ptr = static_cast<char*>(malloc(5*sizeof(*ptr));
strcpy(ptr,"abcd");
/* more stuff */
free(ptr);
Поскольку вопрос был переназначен на C ++, вы также можете использовать new
и delete
.
/* using C++ new and delete */
char *ptr = new char[5]; // allocate a block of 5 * sizeof(char)
strcpy(ptr, "abcd");
// do stuff
delete [] ptr; // delete [] is necessary because new[] was used
Или вы также можете использовать std::string
.