C语言:字符数组

(1)字符数组:每一个元素都是字符
(2)C语言中没有字符串类型,所谓字符串就是一个个字符的组合 ====> 可以将字符串存到字符数组里面 ====> " "括起来的内容是字符串,每一个字符串都以’\0’结尾
(3)字符数组和字符串是两回事情
(4)字符串是一个常量,是不能变的 ===> 字符数组是一段空间,可以存字符

1、字符数组初始化,可以按照普通数组的初始化方式初始化

	char str1[10] = {'h', 'e', 'l', 'l', 'o'};

2、允许用字符串直接给字符数组初始化

	char str2[10] = "hello";  // char str[10] = {'h', 'e', 'l', 'l', 'o', '\0'};
	char str3[10] = {"hello"}; 

注意:可以直接打印字符数组,字符数组被当做字符串处理

	printf ("%s\n", str3);

注意:可以直接对字符数组进行输入

	scanf  ("%s", str3);
	printf ("%s\n", str3);
int main()
{

	char str1[] = "hello\0world";
	printf ("长度: %lu\n", sizeof(str1)/sizeof(char));
	printf ("%s\n", str1);
	
	
	return 0;
}

注意:字符串本身代表该字符串的首个元素的地址

int main()
{

	char str1[] = "hello\0world";
	printf ("长度: %lu\n", sizeof(str1)/sizeof(char));
	printf ("%s\n", str1);
	
	char *p1 = "hello\0world";
	char *p2 = str1;
	
	printf ("字符串   : %p\n", p1);
	printf ("字符数组 : %p\n", p2);
	
	p2[1] = 'w';  // 允许,修改的是数组第2个元素
	printf ("%s\n", p2);
	
	// p1[2] = 'w';  // 不允许,修改的是字符串,字符串是常量,不能改
	
	scanf ("%s", p2);
	printf ("%s\n", p2);
	
	char *p3;           // 没有初始化的指针叫野指针,不能操作
	// scanf ("%s", p3);   // p3没有指向一个有效的空间
	
	
	char str2[5] = {'h', 'e', 'l', 'l', 'o'};
	printf ("%s\n", str2);
	
	
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值