字符指针 指针的进阶

本文解释了C语言中的指针概念,展示了如何通过指针访问和修改地址值,以及const指针与普通数组的区别。指针p指向abcdef首字符,而arr1和arr2是独立的数组副本,尽管它们包含相同内容,但地址不同。
摘要由CSDN通过智能技术生成
#include<stdio.h>
int main(){
	char ch='w';
	char* pc=&ch;
	*pc='b';
	return 0;
}

指针就是指向一块地址,对指针进行解应用可以得到指向地址的值,相同的也可以通过指针改变该地址的值。

char* p="abcdef";
	printf("%s",p);

这里指针p里存放的是首字符a的地址,可以通过得到a的地址,把接下来的字符串一起打印下来,并且该字符串以及首字符不能通过解应用来修改。

可以这样想,如果指针p里存放的是abcdef,但是指针p是char类型的只能存放4个字节,没有那么大的空间可以存放该字符串,所以指针p存放的是首字符a的地址。

    const char* p1="abcdef";
	const char* p2="abcdef";
	
	char arr1[]="abcdef";
	char arr2[]="abcdef";
	
	if(p1==p2)
		printf("p1 = p2\n");
	else
		printf("p1 != p2\n");
	
	if(arr1==arr2)
		printf("arr1 = arr2\n");
	else
		printf("arr1 != arr2\n");

该代码输出p1=p2,arr1!=arr2。

因为p1和p2都是指针,它们两个都是指向字符串abcdef中首字符a的地址,所以p1=p2。

arr1和arr2为char类型的数组,它们各自开辟了一块空间存放字符串abcdef,所以arr1!=arr2.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值