c语言入门之 指针

指针的声明与定义

指针是一种数据类型,就像int 装整型数据,float装浮点型数据,指针装地址数据。

int*p;//

形式:类型+*+变量名组成

指针指向空间

赋值与初始化

int a=12//赋值
int*p;//赋值
p=&a;//赋值
int*p=&a;//初始化
printf("%d,%d,%d",&p,p,&a);

通过地址间接操作所指向的空间

读、写、取址

int *p=&a;//*p和下面的*p不一样,第一个是标记作用,代表它是指针
	//读
	printf("%d,%d,%d",p,*p,a);//第二个表示内存操作运算符(可以读写取)
	//写
	*p=145;//a也变成145
	printf("%d,%d,%d",p,*p,a);
	//取地址
	printf("%p,%p,%p",p,*p,&a);

p指向一个变量,*p就是变量本身
p是指向空间的地址,&p是p变量自己的地址

类型决定内存操作

double b=123.123;
	int *p1=&b;
	printf("%lf,%lf\n",*p1,b);

这么写会出问题应该是:

double b=123.123;
	double *p1=&b;
	printf("%lf,%lf\n",*p1,b);

一个小范围指针可以指向大字节的空间,并且操作不异常,虽然结果有问题
但大范围指针不可以指向小范围空间,且操作异常,结果有问题

二级指针

定义

int a=12;
	int *p=&a;
	int* *p1=&p

int a=12;
	int *p=&a;

	//二级指针
	
	int* *p1=&p;//二级指针装1级指针地址
	int** *p2=&p1;//三级指针装2级指针地址
system("pause");
return 0;

指针变量有自己的地址
int *p1=p只能值传递,不能取p地址
应该是nt *p1=&p
二级指针与数组无关

二级指针使用

int main(void)

{
	int a=12;
	int *p=&a;




	int* *p1=&p;
printf("%d,%d,%d,%d,%d,%d\n",&a,p,&p,p1,*p1,&p1);

system("pause");
return 0;
}

三级目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值