指针、空指针、指针值、void*指针

本文详细介绍了指针的概念,包括指针的定义方式、初始化方法、指向的值为0的情况与空指针的区别,以及void*指针的应用场景。

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

    指针

    指针是一种类型的复合类型。

(1)指针本身是对象

(2)无须在定义时赋初值,未初始化指针使用之前必须赋值。

在块作用域内定义的指针若没有初始化则是不确定值;在块作用域外定义的指针若没有初始化则默认初始化是0。

	//定义指针的方法一
	int a1 = 12;
	int *ptr1;
	ptr1 = &a1;	//使用之前必须赋值
	printf("ptr1 = %d, *ptr1 = %d\r\n", ptr1, *ptr1);

	//定义指针的方法二
	int b1 = 12;
	int *ptr2 = &b1;
	printf("ptr2 = %d, *ptr2 = %d\r\n", ptr2, *ptr2);
	printf("\r\n");

(3)指针类型需要与指向的变量的类型一致

(4)不能定义指向引用的指针,如int &*p = &k;

另: int *& 是指针的引用,指针的引用一般在树旋转的时候会用到。


    指针的值(即地址)

(1)指向一个对象

(2)指向紧邻对象所占空间的下一个位置

(3)空指针,不指向任何对象

(4)无效指针,上述情况之外的其他值


    空指针及指针指向变量值为0

    指针为空指针和指针指向的变量值为0是不一样的。

    指针指针的变量值为0,说明指针指向这个变量,这个变量值为0,此时指针值为该变量的地址。

    指针为空指针,说明指针不指向任何对象,指针值为0。

(1)使指针为空指针,可以用以下方法:

    //方法一
    int *ptr_a = nullptr;//或0、NULL

    //方法二
    int b = 12;
	int *ptr_b = &b;
	ptr_b = 0;
	
	//方法3
	int *ptr_c;
	ptr_c = 0;

(2)使指针指向的变量值为0,可以用以下方法:

    //方法一
    int d = 12;
	int *ptr_d = &d;
	*ptr_d = 0;
	
	//方法二
	int e = 0;
	int *ptr_e;
	ptr_e = &e;//ptr_e = e;则错误	
	
	//方法三
	int f = 0;
	int *ptr_f = &f;	


    void*指针

    是一种特殊指针,存放任何对象的地址。void*

(1)拿它和其他指针比较

(2)作为函数的输入和输出

(3)赋值给另一个void*指针





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值