是否可以使用指针创建字符串变量?所以我不必每次都传递它的大小,比如char x [4] ="aaa"?
我怎样才能得到这种字符串的大小?
我可以用指针初始化一个空字符串吗?
请记住,C中的字符串由空终止符字符结束,写为\0.如果在指针变量中存储了格式良好的字符串,则可以通过搜索此字符来确定长度:
char *x = "hello"; // automatically appends a null terminator
int len = 0;
while (x[len] != '\0') {
len++;
}
Run Code Online (Sandbox Code Playgroud)
如果你的变量没有初始化或者没有格式良好(例如,通过存在NULL),你显然不能采用这种方法; 然而,大多数功能通常是琴弦的前提下写有良好的,因为这将导致更快的代码.
如果要初始化指针,则有三个选项:NULL有效地址(例如char *x = &someCharVar)或字符串常量(例如char *x = "hello").请注意,如果使用字符串常量,则除非使用非常量字符串的地址重新赋值,否则写入该指针是非法的.
// Get enough space for 24 characters plus null terminator
char *myString = (char*) malloc(25 * sizeof(char));
strcpy(myString, "some text"); // fill the new memory
fgets(myString, 25, stdin); // fill with keyboard input
Run Code Online (Sandbox Code Playgroud)
注意sizeof(char)这里是不必要的,因为a char总是被定义为正好1个字节.但是,当您使用其他数据类型时,这是一个很好的习惯,并且通过使您的意图非常清晰,它有助于使您的代码自我记录.