void指针和const修饰符

void指针

  • void指针是一种不确定数据类型的指针变量,它可以通过强制类型转换让改变量指向任何数据类型的变量。
  • 一般形式为:void *<指针变量名称>;
    对于void指针,在没有强制转换类型之前,不能进行任何指针的算术运算。
编程练习
#include<stdio.h>
int main()
{	
	int m = 10;
	double n = 3.14;
	void * p,*q;
	//赋值给void *类型指针前需要强制转换转换为void *类型
	p = (void *) &m;
	//打印数据时需要将void *类型指针按照所打印数据的类型进行相对应的强制转换
	printf("%d %d\n",m,*(int *)p);
	q = (void *)&n;
	printf("%.2f %.2f\n",n,*(double *)q);
	return 0;
}

运行结果:

10 10
3.14 3.14

例:使用void指针遍历以为数组

#include<stdio.h>
int main()
{	
	int arr[] = {1,2,3,4,5,6};
	void * p;
	int  i ,n;
	p = arr;
	n = sizeof(arr)/sizeof(int);
	for(i = 0;i < n;i++)
	{
		printf("%d",*((int *)p + i));
	 }
	puts("");
	return 0;
}

运行结果:

123456
const变量

常量化变量的值
一般形式说明:

  1. const <数据类型>变量名 = [<表达式>];
  2. 常量化变量时为了使得变量的值不能修改
  3. 变量由const修饰时,若想用指针间接访问变量,指针也要有const修饰。const可以放在指针声明两边,但用法不同
const修饰指针

常量化指针目标表达式

  • 一般说明形式如下:
    const<数据类型>*<指针变量名称>[=<指针运算表达式>];
    常量化指针目标时限制通过指针改变其目标的数值,但<指针变量>存储的地址值可以修改。

常量化指针变量
一般说明形式如下:
<数据类型>*const<指针变量名称>[=<指针运算表达式>];
使得<指针变量>存储地址值不能改变,但可以通过 * <指针变量名称>可以修改指针所指向变量的数值

总结一句话就是:const修饰谁,谁不能变。
例:

#include<stdio.h>
int main()
{	
	int a = 6;
	const int * p;
	int *const q;
	p = &a;
	//(*p)++;  会报错,const int 修饰的是指针变量p的目标是const型常量
	//q = &a;  同样会报错,const修饰的是指针变量q地址是const类型的常量,地址值不能改变
	*q = 10;
	return 0;
}

常量化指针变量及目标表达式
一般说明形式:

  • const<数据类型>*const<指针变量名> = <指针运算表达式>;
  • 常量化指针变量及其目标表达式,使得既不可以修改<指针变量>的地址,也不可以通过*<指针变量名称>修改指针所指向变量的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值