c - 这些关于指针的陈述是否具有相同的效果?

标签 c pointers

这是...

char* myString = "hello";

...和这个效果一样吗?

char actualString[] = "hello";
char* myString = actualString;

最佳答案

没有。

char  str1[] = "Hello world!"; //char-array on the stack; string can be changed
char* str2   = "Hello world!"; //char-array in the data-segment; it's READ-ONLY

第一个示例在堆栈上创建了一个大小为 13*sizeof(char) 的数组,并将字符串 "Hello world!" 复制到其中。
第二个示例在堆栈上创建一个 char* 并将其指向可执行文件数据段中的一个位置,该位置包含字符串 "Hello world!"。第二个字符串是READ-ONLY

str1[1] = 'u'; //Valid
str2[1] = 'u'; //Invalid - MAY crash program!

关于c - 这些关于指针的陈述是否具有相同的效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2096448/

相关文章:

c - 是否可以在文本文件中定义指向字符的指针?

c++ - B类中的A类初始化包含指向A类的指针

代码段错误(核心转储)pthread 创建

c - `printf("…") || printf("…") || printf("…")` 的语义

pointers - 带指针的 Golang 类型断言

c++ - 使用指向二维数组行的指针来初始化其值。为什么这行得通?

c++ - "Unhandled exception"/"Access violation writing location"引用数组指针错误

c - 生成无向图的邻接矩阵

c++ - 如何将 "\327\220\327\250\327\225\327\236"转换为希伯来语?

c++ - AES 加密解密输出不正确