C风格字符串有什么区别
char str[10]="Hello";
char str[]="Hello";
char* str= "Hello";
1)我相信这char str[10]="Hello"
是自动变量并存储在堆栈中。真的吗?10 bytes
即在堆栈上分配。
2)是否char str[]="Hello";
也存储在堆栈中?6 bytes - including null character
即在堆栈上分配。
3) 是否char* str= "Hello";
将指针 str 存储在堆栈上并且对象"Hello"
存储在堆上?即在堆上分配6 bytes - including null character
。
4) 所有字符串(in question 1,2 and 3)
都以空结尾。真假?
5) 无论C or C++
何时我们创建一个类似的字符串"Hello"
,它总是以空结尾。假设在C++
我们声明string str = "Hello";
中,它也是 null Terminated 吗?
编辑
考虑在 main() 中声明的所有。
@Negative 点和关闭请求。我问这个问题是关于它们在哪里存储堆或堆栈?还有空终止。