C语言 指针 const指针引用

文章讲述了const指针的使用,允许非const指针赋值给const指针但限制于一级解引用。同时介绍了二级指针的引用,通过示例解释了如何通过二级指针改变一级指针所指向的值,以及在类型匹配上的严格要求。在尝试将int**赋值给constint**时,编译器会报错,显示无效的类型转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

const指针


非const指针赋给const指针没问题,前提是 只进行一级解引用
这句话的意思是说:
int *p1; const int *p2; p2 = p1;是被允许的。
但是,
const int **pp2; int *p1; *p2 = &p1;是不被允许的。

	const int **pp2;
	int *p1;
	pp2 = &p1;

报错提示:

16 6 D:\File\pra2.cpp [Error] invalid conversion from ‘int**’ to ‘const int**’ [-fpermissive]

意思是:二级int型指针赋值给const型int型二级指针是无效的转化

在这里插入图片描述

二级指针引用


这里增加一点关于 二级指针引用的内容。

#include<stdio.h>

int main(){
	
	int *p1;
	int **pp2=&p1;	//将p1的地址赋值给二级指针pp2,也就是pp2指向了p1
	int n = 13; 
	printf("%d ",n);	//n的初始值为13
	*pp2 = &n;	//将变量n的地址赋值给pp2的值,即p1指向n 等价于=> p1 = &n;
	printf("%d ",n);	//n的值此时还没变 还是13
	*p1 = 10;	//将10赋值给p1,即p1所指向的n被赋值为10
	printf("%d ",n);	//输出n当前值,为10
	
} 

在这里插入图片描述
总结指针二级引用:

  1. 二级指针pp2的值是其所指向的一级指针p1的地址;
  2. 将二级指针pp2的值修改为变量x,则是将变量x的地址赋给pp2的值,也就是将变量x的地址赋给p1,即p1的值为x的地址;
  3. 对p1的值进行修改,也就是对内存中,变量x的地址中,所存的的值进行修改,所以会修改掉x的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值