虽然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= malloc(100*sizeof(char)); //p指向预留100字节的内存块,待处理的字符串将储存在此 在成粗使用p,相当于程序已按数组声明的方式显示的分配了空间
浙公网安备 33010602011771号