C 语言中 char s[] 和 char *s 的区别

cserver side programmingprogramming

我们有时看到字符串使用 char s[] 或 char *s 制作。那么在这里我们将看到它们有什么区别还是相同?

有一些区别。s[] 是一个数组,但 *s 是一个指针。例如,如果两个声明分别是 char s[20] 和 char *s,那么通过使用 sizeof() 我们将得到 20 和 4。第一个将是 20,因为它显示有 20 个字节的数据。但第二个只显示 4,因为这是一个指针变量的大小。对于数组,整个字符串存储在堆栈部分,但对于指针,指针变量存储在堆栈部分,内容存储在代码部分。最重要的区别是,我们无法编辑指针类型字符串。所以这是只读的。但是我们可以编辑字符串的数组表示形式。

示例

#include<stdio.h>
main() {
   char s[] = "Hello World";
   s[6] = 'x'; //尝试编辑位置 6 处的字母
   printf("%s", s);
}

输出

Hello xorld
此处编辑成功。现在让我们检查指针类型字符串。

示例

#include<stdio.h>
main() {
   char *s = "Hello World";
   s[6] = 'x'; //尝试编辑位置 6 处的字母
   printf("%s", s);
}

输出

分段错误

相关文章