字符数组和字符串(2)

void ch_arr_test1()
{
	//chArr0 :普通字符数组(结尾没有\0 或者): 与普通数值数组(eg:int类型的数组)定义、初始化、使用都一样;
	//chArr0 :以%s打印,打印完已初始化的部分,还会一直打乱码,直到遇到'\0'才停止;有的编译器优化了,会整体先清,所以不会打印后面乱码;
	char chArr0[10] = {'H', 'e', 'l', 'l', 'o'};

	//chArr1、chArr2 :'\0' <==> 0, 二者的ASCII都是;二者与字符‘’不一样,字符‘’的ASCII是;
	//chArr3 :编译器会自动在字符串尾部加上'\0', 所以chArr1、chArr2、chArr3:是一样的;
	char chArr1[10] = {'H', 'e', 'l', 'l', 'o', 0};
	char chArr2[10] = {'H', 'e', 'l', 'l', 'o', '\0'};
	char chArr3[10] = "Hello";
    //chArr4 : 空字符串,编译器也会自动在空字符串尾部加上'\0',所以sizeof(chArr4)为;
	char chArr4[] = "";
	char *pchArr5 = "Hello"; //和chArr0--4不同,这里pchArr5是个字符型指针,这里的“Hello”是字符串常量,存储在内存四区的数据区(又名全局区),不可以修改;

	printf("0: %s size is %d strlen %d\n", chArr0, sizeof(chArr0), strlen(chArr0));
	printf("1: %s size is %d strlen %d\n", chArr1, sizeof(chArr1), strlen(chArr1));
	printf("2: %s size is %d strlen %d\n", chArr2, sizeof(chArr2), strlen(chArr2));	
	printf("3: %s size is %d strlen %d\n", chArr3, sizeof(chArr3), strlen(chArr3));
	printf("4: %s size is %d strlen %d\n", chArr4, sizeof(chArr4), strlen(chArr4));
	printf("5: %s size is %d strlen %d\n", pchArr5, sizeof(pchArr5), strlen(pchArr5));
	for (int i = 0; i < sizeof(chArr0) / sizeof(chArr0[0]); i++) {
		printf("%d ", chArr0[i]);
	}
	printf("\n");

	for (int i = 0; i < sizeof(chArr1) / sizeof(chArr1[0]); i++) {
		printf("%d ", chArr1[i]);
	}
	printf("\n");

	for (int i = 0; i < sizeof(chArr2) / sizeof(chArr2[0]); i++) {
		printf("%d ", chArr2[i]);
	}
	printf("\n");

	for (int i = 0; i < sizeof(chArr3) / sizeof(chArr3[0]); i++) {
		printf("%d ", chArr3[i]);
	}
	printf("\n");

	for (int i = 0; i < sizeof(chArr4) / sizeof(chArr4[0]); i++) {
		printf("%d ", chArr4[i]);
        chArr4[i] = 'd';
	}
	printf("\n");

	for (int i = 0; i < 10; i++) {
		printf("%d ", *(pchArr5 + i));
        //*(pchArr5 + i) = 'd';
	}
	printf("\n");
}

运行结果:

// 字符数组
void ch_arr_test2()
{
    //chArr0: ‘\0' 后面不要直接连着数字,因为有可能几个数字连在一起刚好是一个转义字符,例如:'012' 就是'\n';
	char chArr0[] = "\012abc";
	printf("0: %s size is %d strlen %d\n", chArr0, sizeof(chArr0), strlen(chArr0));
	for (int i = 0; i < sizeof(chArr0) / sizeof(chArr0[0]); i++) {
		printf("%d ", chArr0[i]);
	}
	printf("\n");

	//chArr1: 中的‘’就是普通字符‘’,ASCII为,可以正常打印显示
	//chArr2、chArr3:中的'\0' <==> 0,ASCII 都为,是字符串结束标记,%s打印和strlen计算字符串长度,遇到'\0' 或者都会停止
	char chArr1[10] = {'H', 'e', '0' , 'l', 'l', '0'};
	char chArr2[10] = {'H', 'e', '\0', 'l', 'l', '0'};
	char chArr3[10] = {'H', 'e',  0  , 'l', 'l', '0'};
	printf("1: %s size is %d strlen %d\n", chArr1, sizeof(chArr1), strlen(chArr1));
	printf("2: %s size is %d strlen %d\n", chArr2, sizeof(chArr2), strlen(chArr2));
	printf("3: %s size is %d strlen %d\n", chArr3, sizeof(chArr3), strlen(chArr3));
	for (int i = 0; i < sizeof(chArr1) / sizeof(chArr1[0]); i++) {
		printf("%d ", chArr1[i]);
	}
	printf("\n");
	for (int i = 0; i < sizeof(chArr2) / sizeof(chArr2[0]); i++) {
		printf("%d ", chArr2[i]);
	}
	printf("\n");
	for (int i = 0; i < sizeof(chArr3) / sizeof(chArr3[0]); i++) {
		printf("%d ", chArr3[i]);
	}
	printf("\n");
}

 

运行结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值