C语言中是没有专门的字符串变量类型的,我觉得都是通过存放地址连续的字符来生产成的字符串。字符串有两种办法来声明和使用一个是字符指针另一种是字符数组。如下: char *ch="linux"; char ch[]="linux"; 这两种方法第一种用的比较多但是里边但是这其中其实也隐含着几个重要的概念。 先说第二种,这种方式定义使用都比较简单但是要注意在最后有一个'\0'作为字符串的结束是系统放进去的。这要注意'' '\0'和 ' 0' 的区别。第一种方式定义就尤其要注意因为在GCC中在编译的时候将第一种定义的"linux"是放在代码段的也就是说是只读的如果你通过指针进行了修改那么就会报段错误那就是说第一种那样的定义是不能进行修改的,第一种定义就相当于是定义成 const char *ch="linux";是一样的但是在平常的 使用中都用第一种方式是因为这种方式比较灵活,第二种方式定义一般就只能存放在程序的私有栈里,而第一种就比较灵活数据段,栈,堆里都可以存放普遍的用法应该是 char a[]="linux"; char *p=a; 之后来操作p进行数据访问和修改或者是 char *p=(char *)malloc(20); 申请堆地址来进行访问。 这里就很好的体现了他的灵活性可以使用栈、堆、数据区等所有能提供内存的地方。