虽然C语言中没有存储字符串的特殊数据类型,但是可以用字符数组来存储这种类型的信息

注意:字符串是以空字符结尾的字符序列,空字符是一个特殊的字符,用\0表示,但是单个字符

char string[10] = {'A','l','a','b','a','m','a','\0'};
char string[10] = "Alibama";
char *p = "Alibama"; //字符串字面量相当于指向字符串的指针 在这种情况下,*p与 string[]等价

两种给字符数组赋值。

在c函数通过查找空字符串来确定字符串的长度,也就是标记了字符串的结尾,所以要定义使用字符串,只需要开头就ok,,---指针或者数组名 ,因此给函数传递字符串,只需要传递数组名或者指向字符串的指针 就可以

2.分配存储空间

数组定义的字符串,数组就为字符串提供已分配的空间 

其他储存字符串方法:1)在编译程序时候,为字符串字面量分配空间。2)在执行程序时候,使用malloc()函数分配空间动态分配

1)编译期分配字符串的空间

char *p = "bangbang";

char p[]="bangbang";

存储在内存的何处不必关心,声明了指向该字符串首字母地址的指针   在这种情况下,*p相当于p[]

2)malloc()函数

#include<stdlib.h>
void *malloc(size_t size);
函数返回值是指向内存块第一个字节的地址,返回类型胃void,,因为指向void类型的指针,可兼容任意类型的数据类型,因此通过malloc函数分配的内存可以储存C语言任意的数据类型
 
注意:malloc函数返回一个指针,指向已分配的内存块,如果malloc无法分配要求的内存数量,将返回NULL,因此在进行动态分配内存时候,要进行检查
#include<stdlib.h>
#include<stdio.h>

int main(){
char *str = (char *)malloc(100*sizeof(char));
if(str==NULL){
printf("Not enough\n");
exit(1);
}
printf("string was allocated\n");
return 0;
}


例如:int *number = (int*)malloc(50*sizeof(int));  //为包含50个整型的数组分配内存
char *p;
p= malloc100*sizeofchar));  //p指向预留100字节的内存块,待处理的字符串将储存在此   在成粗使用p,相当于程序已按数组声明的方式显示的分配了空间