C语言字符串、字符数组

代码及结果

#include <stdio.h>

int main()
{
	char *a = "hello";
	char b[] = "hello";

	printf("地址 &a = %p\n", &a);        //a 的地址是指针变量 a 存放的地址,与字符串无关

	printf("  值 a = %p\n", a);          // a 变量的值时 字符串存放的地址,也是首元素的地址
	printf("a[0] = %c\n", a[0]);    // a[0]  是个元素
	printf("地址 &a[0] = %p\n", &a[0]);  // 元素 a[0] 存放地址
	printf("&a[1] = %p\n", &a[1]);  // 元素 a[0] 存放地址
	
	puts(" ");
	
	printf("地址 &b = %p\n", &b);        // 指针常量 b 的地址,也是 b 的值
	printf("  值 b = %p\n", b);			// b 的值为字符数组首元素的地址
	printf("b[0] = %c\n", b[0]);	// b[0] 是元素
	printf("地址 &b[0] = %p\n", &b[0]);  // b[0] 的地址,== b 
	printf("&b[1] = %p\n", &b[1]);  // b[1] 的地址
	
		puts(" ");
		
	printf("字符串   %d\n", strlen(a));  // 字符串的长度
	printf("字符数组 %d\n", strlen(b));  // 字符数组的长度
	printf("指针的大小   %d\n", sizeof(a));  // 字符串的长度
	printf("数组的大小   %d\n", strlen(a));  // 字符串的长度
	puts(" ");

	system("pause");

	return 0;
}

在这里插入图片描述

结论

  1. 字符数组和字符串不是一样的
  2. 字符串与字符数组的 a,b 的值,都是首元素的地址
  3. &a 是指针本身所在的地址,&b 是数组 b 的地址(也是 b 的值,也是收元素的地址)
  4. b == &b == &b[0]; a == &a[0] != &a
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值