char[] 是一个字符数组,它是一个固定长度的字符序列,分配在栈上,具有固定的内存大小。而 char* 是一个指针,指向一个字符序列的起始地址,可以指向不同长度的字符序列,分配在堆上,具有动态的内存大小。

例如:

'char str1[] = 'hello'; // 定义一个字符数组 str1 'char* str2 = 'world'; // 定义一个指针 str2,指向常量字符数组 'world' 的起始地址

在这个例子中,str1 是一个字符数组,它在栈上分配了足够的内存来存储 'hello' 这个字符串。而 str2 是一个指针,它指向常量字符数组 'world' 的起始地址,它的内存分配在堆上,可以指向不同长度的字符串。如果我们将 str2 指向另一个字符串,可以这样做:

'str2 = 'goodbye'; // 将 str2 指向 'goodbye'

但是如果我们尝试修改 str1 中的字符,例如:

'str1[0] = 'H'; // 将第一个字符 'h' 改为 'H'

这是可以的,因为 str1 是一个字符数组,它的内存是可修改的。但是如果我们尝试修改 str2 中的字符,例如:

'str2[0] = 'W'; // 将第一个字符 'w' 改为 'W'

这是不可以的,因为 str2 指向的是一个常量字符数组,它的内存是只读的。

C语言 char[] 和 char* 区别:详解与实际例子

原文地址: https://www.cveoy.top/t/topic/n1Q3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录