void指针及用法
  C

void指针及用法

 次点击
4 分钟阅读

万能指针

  • 万能指针其实就是void*类型的指针,而void*指针一般被称为通用指针或泛指针

  • 它是C语言关于纯粹地址的一种约定。当某个指针是void型指针时,它指向的对象不属于任何类型

  • 因为void型指针不属于任何类型,不可以对其进行算术运算,比如自增,编译器不知道其自增需要加多少

void指针

一般形式为:void *<指针变量名称>;

对于void指针,在没有进行强制类型转换之前,不能对其进行算术运算

#include <stdio.h>

int main(){
	int a = 10;
	float b = 3.14;
	char c = 'c';
	void *p;

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

	p = &b;
	printf("float:%f %f\n",b,*(float *)p);

	p = &c;
	printf("char:%c %c\n",c,*(char *)p);

	return 0;
}

/*
int:10 10
float:3.140000 3.140000
char:c c
*/

使用void指针遍历一维数组

#include <stdio.h>

int main(){
	int a[] = {1,4,5,2,10,9};
	void *p = a;
	int i;

	for(i = 0;i < sizeof(a) / sizeof(int); i++){
		//printf("%d\n",a[i]);
		printf("%d\n",*((int *)p + i));
	}

	return 0;
}

/*
1
4
5
2
10
9
*/

使用场景

  • 万能指针充当函数返回值

  • 万能函数充当函数参数

© 本文著作权归作者所有,未经许可不得转载使用。