C语言入门:指针

1.指针是什么?

指针是一种保存变量地址的变量。
在计算机中每个存储单元(一个字节)都有一个编号,这个编号称为变量地址。

普通变量的值就是实际值,指针变量的值是变量的地址

  • 取地址 &
#include<stdio.h>
main(){
	int a=0;
	printf("%p\n",&a);
}
  • 说明
    1.&: 在变量前面加&,可以表示获取变量的地址
    2.%p: 是地址的输出格式符
    PS: 变量的地址通常采用16位进制数表示
2.指针的使用
2.1 定义指针

定义指针的形式与定义普通变量基本一样,只需在变量名和数据类型之间加*

#include<stdio.h>
main(){
	int a=0;
	int* p;//定义一个int型的指针p
	p=&a;//将a的地址赋给指针变量p
	printf("%d\n",*p);//输出结果是a
}

指针变量只能用同类型的变量赋值
也可以对指针直接进行初始化,如下:

#include<stdio.h>
main(){
	int a=0;
	int *p=&a;
	printf("%d\n",p);//输出为十进制数的地址
	printf("%p\n",p);//输出为十六进制数的地址
	printf("%d\n",*p);//输出为0
}

指针和变量一样,必须是赋值之后才可以使用
非法格式如下:

int a=0;
int *p=a;//这是非法的,对指针初始化时,给指针赋的值必须是地址
  • 引用
int a=0;
int &p=a;//这里p是a的引用,可以当作p是a的别名
printf("%d\n%d\n%d\n%d",a,p,&a,&p);//前面两个输出是0,后面两个输出的是a的地址

注意

**这里这里要十分注意区别取地址和引用,&作为引用主要是在变量的声明,也就是将此变量作为一个别名,两者的内存地址完全相同

  • 解引用(*)
#include<stdio.h>
main(){
	int a;
	int *p;//这里*的作用是定义p为指针
	p=&a;//这里&是取a的地址
	*p=8;//这里*是解引用
	printf("%d\n",p);
}
  • 引用和解引用的复合使用
#include<stdio.h>
main(){
	int *&r=p;//这里r是对p的引用
}

本课需十分注意* 和&的真正含义,当时我面试学校实验室的时候,学长问我这是什么意思,我当时只说就是读出此地址的值,当时我还没有接触到引用和解引用这两个名词,也不知道是什么,还有就是看再多的书也不一定会有用,该实践还是要动手,理论和实践还是有很大的差距 ,fighting!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值