一道题——关于 指针 和 数组 区别

int main()
{
	const char* p1 = "abcde";
	const char* p2 = "abcde";

	char arr1[] = "abcde";
	char arr2[] = "abcde";

	if (p1 == p2)
		printf("p1==p2\n");
	else
		printf("p1!=p2\n");

	if (arr1 == arr2)
		printf("==\n");
	else
		printf("!=\n");

	return 0;

}

运行的结果是:

p1==p2                 !=

原因:

abcde是一串常量字符,放在特定的空间,不能改变,所以地址是定死在那一块

而p1和p2 都是指向abcde这串字符的首字母地址,所以它俩存放的地址一样,=

对于数组来说,他要存放这些字符,要开辟空间,每个变量开辟的地址肯定都不一样,arr1和arr2表示的是它们各自首元素的地址,不可能相等,!=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值