7.1初始字符串
1.和整形数组一样输出字符串——很蠢,也行
'':单引号用于单个字符——“”:双引号用于字符串
#include <stdio.h>
int main()
{
int i = 0;
char aa[] = {'h','e','l','l','o'};
for(i=0;i<5;i++)
{
printf("%c",aa[i]);
}
return 0;
}
改进方法
#include "stdio.h"
int main()
{
int i = 0;
char aa[] = "hello";
for(i=0;i<5;i++)
{
printf("%c",aa[i]);
}
return 0;
}
野指针:并没有明确的内存指向,危险
指针常量不能修改,字符数组可以修改
#include <stdio.h>
int main()
{
int data[] = {1,2,3,4,5};
char cdata[] = {'h','e','l','l','o'};
char cdata2[] = "hello";
char *pchar = "hello";//字符串常量,不允许被修改
char c = 'c';
// char *p;//野指针,并没有明确的内存指向,危险
// *p = 'a';
cdata2[3] = 'm';
printf("%s",cdata2);
putchar('\n');
puts(cdata2);
*pchar = 'm';
puts("end");
}
7.2字符串的内存存放方式及结束标志
7.3sizeof和strlen区别很重要
7.4malloc动态开辟内存空间
malloc:动态按需分配内存空间
realloc:扩容内存
P = NULL;//防止P是野指针,暂时先初始化指向NULL。
free(p);//使用完后将p内存释放
memset:将p开辟的12个字节全部初始化为‘\0’
7.5字符常用操作函数第一部分
7.6自己实现字符串拷贝函数
#include "stdio.h"
char* copy(char *des,char *src)
{
if(des == NULL || src == NULL)
{
return NULL;
}
char *bak = des;
while(*src != '\0'){
*des++ = *src++;
}
return bak;
}
int main()
{
char str[128] = {'\0'};
char *p = "Walker F.M2";
copy(str,p);
puts(str);
return 0;
}
7.7C语言断言函数assert
7.9字符串拼接strcat使用及实现
1.直接使用strcat拼接
7.9字符串比较strcmp使用及实现
int strcmp(const char *s1,const char *s2);