指针

指针

概念

指针是一个变量,它存储着各种数据类型的数据的地址,并且可以直接使用。


声明

指针的声明与变量略有不同(以名为a,数据类型为int的变量举例,值为零):

变量:

int a = 0;

而指针:

int *a = 0;

可以注意到,指针的声明比较变量来说,多了一个*。


*的使用

前面刚刚说过,*是用来声明指针的,这里又提到,不会有什么特殊用法吧?

还真有。

在声明时,*表示的是指针;但是在输出中,表示的是解地址符

举例说明:

int main(){
	char a = 'a';
	char *p_a = &a; // 找到变量a的地址,存放到指针变量p_a中 
	printf("%c",*p_a); // *:解地址符 
	return 0;
}

比如这段代码,第一个*指的是名为p_a的指针,而第二个,也就是在printf中的,指的是解地址,获取的是变量a中的字符:a。并且输出指针要用**"%#X"**作为格式控制符。


+1问题

再来看下面这段代码:

int main(){
	int a = 3;
	int *p_a = &a;
	printf("%#X",p_a+1);
	return 0;
}

只见输出了p_a这个指针的地址+1的值,那么输出的是什么呢?(已知p_a为0X23FE44,0X是16进制的前缀

是0X23FE45,对吧?好的,运行一下。

你应该运行出来是0X23FE48。如果不是,检查你的代码。原因也很简单,一个int占4个字节,而指针是存储地址的,所以自然要加上4。


+1问题2.0

你刚才一定被+1问题搞得不轻,那么,2.0来了。

用代码说话:

int main(){
	int arr[5] = {0,6,2,3,1};
	printf("%d",*(arr+1));
	return 0;
}

我可以告诉你,输出的是6。没错,不要怀疑你电脑出问题了。

原因在这里:

数组名在指针中,表示着首元素。

明白了吧?


这就是基础指针的所有内容。头不大吧?不大就好,反正我头是大了。我是大头,下雨不愁。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值