目录
一、字符串
在一定概念上,字符串约等于字符数组。
char str[ ] = {'h','e','l','l','0'};或 char str[ ] = "hello";
一般使用 char *p =“hello”
char *p与char str[ ]的区别
str[] 是字符串变量
*p一般是字符串常量,不允许被修改。可以保存地址,指向字符串常量的地址空间,但对野指针的内存空间操作不行
二、字符数组的存储方式
//字符串和字符数组的区别
int ddata[]={1,2,3,4,5};
char data[]={'h','e','l','l','o','\0'};//在一般使用时会加入一个'\0'元素,以免出现问题
char data2[]="hello";// '\0' 为字符串的结束标志,会自动在字符串后加,因此字符串的空间大小比字符数组多 1.
int len = sizeof(ddata)/sizeof(ddata[0]);
printf("len=%d\n",len);
len = sizeof(data2)/sizeof(data2[0]);
printf("len=%d\n",len);
len = sizeof(data)/sizeof(data[0]);
printf("len=%d\n",len);
三、sizeof与strlen的区别
//sizeof和strlen的区别
char data[128]="hello";
void (*ptest)()=test;
printf("sizeof=%d\n",sizeof(data));
printf("stelen=%d\n",strlen(data));//计算有效字符的长度,结束标志会被略过
char* p ="hello";
//p是 char* sizeof来计算的时候,得出是计算机用多少字节来表示一个地址
printf("sizeof:p= %d\n",sizeof(p));
printf("sizeof:cahr*= %d\n",sizeof(char*));
printf("sizeof:int*= %d\n",sizeof(int *));
printf("sizeof:char= %d\n",sizeof(char));
printf("sizeof:test= %d\n",sizeof(test));
printf("sizeof:*ptest= %d\n",sizeof(ptest));
printf("stelen: %d\n",strlen(p));
四、动态开辟字符串
使得野指针可以被使用</