c语言的char 和char有什么具体区别给我一个实际例子
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 指向的是一个常量字符数组,它的内存是只读的
原文地址: https://www.cveoy.top/t/topic/e459 著作权归作者所有。请勿转载和采集!