C语言之字符串

目录

一、字符串

char *p与char str[ ]的区别

二、字符数组的存储方式

三、sizeof与strlen的区别

四、动态开辟字符串

五、常用字符串API

输出、获取字符串

计算长度

拷贝

断言

拼接

比较

查找子字符、子串

字符串分割


一、字符串

在一定概念上,字符串约等于字符数组。  

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));

四、动态开辟字符串

使得野指针可以被使用</

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值