void类型指针 && 指针的各种组合

void类型指针:

  • 任何指针都可以赋值给void指针
  • void指针赋值给其它类型指针时都必须经过类型转换
  • void转换前不能参与指针运算,除非转换
  • 本质:void指针只知道指向变量/对象的起始地址,却不能知道它们占几个字节


指向常量的指针:

const int *p1 = &a,不能通过p1改变所指的对象,可以改变指针本身的值

指针类型的常量:

int *const p2 = &a,可以通过p1改变所指的对象,不能改变指针本身的值


指针的各种组合:
  1. const int *p:就是指向常量的指针
  2. int const *p:根本不存在const*运算,所以const是修饰前面的int,等同于1!
  3. int *const p:就是指针类型的常量
  4. int *p[4]:指针数组,有四个元素,每个元素都是整型指针
  5. int (*p)[4]:p为指向4个元素一维整形数组的指针变量
  6. *(int*)p:(int*)是个强制转换,就是将p转换成指向int的指针(一般来讲这里的p都是void型)
  7. x = *p++:指针移动
  8. x = (*p)++:指针所指的元素+1


#include<stdio.h>
int main(void)
{
	char k = 'k';
	int q = 5, q1 = 4;
	void *p = &q;
	printf("%d\n", *(int*)p);
	p = &k;
	printf("%c\n", *(char*)p);

	int const *p1 = &q1;
	printf("%d\n", *p1);
	p = nullptr;	/*C/C++的NULL宏是个被有很多潜在BUG的宏,因为有的库把其定义成整数0,有的定义成(void*),在C++的时代,这就会引发很多问题*/
		/*C++11使用nullptr关键字,是表达更准确,类型安全的空指针*/
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值