字符串、字符数组总结


对于很多初学者,字符数组,字符串等概念很模糊,刚编了个小程序,希望能给初学者某些启示,这些程序最好自己跑跑,仔细体会其中差异。

首先由几点关于strlen的说明:
1)strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找
下去,直到遇到'\0'停止。
2)strlen的参数只能是char* 且必须是以'\0'结尾的.不是char*类型的会报错,不是以'\0'结尾的数据随机。
3)结束符'\0'在asic码表中对应NUL,十进制对应0.

/************************************************************************
**** 
*	工程描述:研究字符串,字符数组
*	创建人:2012.6.27,by e3doc
*	版本号:1.0.0
*	修改记录
****                                                                     
************************************************************************/
#include "stdio.h"
#include "string.h"

#define BUF	Str8	
void main()
{
	int Sizeof;
	int Strlen;
	char Str1[]="abc";					//'a','b','c','\0'			sizeof=4,strlen=3			
	char Str2[3]="abc";					//'a','b','c'				sizeof=3,strlen=7(X)
	char Str3[4]="abc";					//'a','b','c','\0'			sizeof=4,strlen=3
	char Str4[10]="abc";				//'a','b','c','\0'...'\0'	sizeof=10,strlen=3

	char Str5[]={'a','b','c'};			//'a','b','c'				sizeof=3,strlen=7(X)
	char Str6[3]={'a','b','c'};			//'a','b','c'				sizeof=7,strlen=11(X)
	char Str7[]={'a','b','c','\0'};		//'a','b','c','\0'			sizeof=4,strlen=3
	char Str8[4]={'a','b','c','\0'};	//'a','b','c','\0'			sizeof=4,strlen=3
	char Str9[10]={'a','b','c'};		//'a','b','c','\0'...'\0'	sizeof=10,strlen=3

	char *Str10="efghj";					//auto						sizeof=4,strlen=5
	Sizeof=sizeof(BUF);
	Strlen=strlen(BUF);
	while(1);
}


请仔细体会以下几点:
1)str1,str4,str7,str8完全等价,注意其变化过程。
2)注意str4和str9。



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值