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 点和关闭请求。我问这个问题是关于它们在哪里存储堆或堆栈?还有空终止。