2.C语言void的使用

目录

vold定义变量案例

void限定函数返回值

案例1

案例2

void限定函数参数列表

案例1

案例2

[void * 万能指针](#void * 万能指针)

案例1

案例2

总结


描述作用

1.void 是无类型,void 是不允许定义变量的,可以查看 "void定义变量案例"

2.void限定函数返回值

3.void限定函数参数列表

4.void * 万能指针

vold定义变量案例

复制代码
//void是不允许定义变量的
int test1() 
{
	void i = 10;  //编译器不知道给多少内存,编译器不会让代码通过编译
	printf("test1\n");
}

void 是不允许定义变量的: 比如 void i = 10; 这样是直接编译报错。因为编译器不知道给多少内存

void限定函数返回值

案例1

复制代码
func() 
{
	return 10;
}

int test2() {
	printf("test2  func : %d\n\n",func());
}

运行结果

可以看上面案例,我们在返回的位置什么也没加,照样可以运行,而且运行结果也正常返回了10。对于C语言来说,不写返回值也可以调出来。

案例2

从案例1和案例2 可以看出,如果写void那么就会报错,可以限制返回值。这里案例二报错原因是有为 func函数是vold 用%d来解析,解析不出来,编译器抛出错误提示

void限定函数参数列表

案例1

复制代码
int func1() 
{
	return 10;
}
int test3() {

	func1(10);
	printf("test2  \n\n");
}

运行结果

从什么代码来看我们如果在函数参数列表中不做任何限制,调用函数也是可以正常运行的。C语言不会取检测这种语病。

案例2

复制代码
int func1(void) 
{
	return 10;
}
int test3() {
	func1(10);
	printf("test3  \n\n");
}

案例1 与 案例2的区别是在函数传参数的过程中加入了一个void。那么可以来看看运行结果

这样写运行结果也没有问题。但是在编译过程中会提示程序员 error C2197的异常提示。有总比没有好。如果连提示都没有,我们根本无法找到代码异常

void * 万能指针

直接看案例,对应案例来说

案例1

复制代码
void test4() {

	void* p = NULL;
	
	int* pInt = NULL;
	
	char* pChar = NULL;

	pInt = pChar;

	printf("test4  \n\n");
}

运行结果:

编译提示

从上面代码来看不同类型的指针直接互相传递编译器是允许的,只会做出提示,并不会报错。提示类型不兼容。

如果想让编译器不提示,那么就需要强制的进行比如:

案例2

复制代码
void test4() {

	void* p = NULL;
	
	int* pInt = NULL;
	
	char* pChar = NULL;

	pInt = p;//如果直接使用p那么就不需要强转换,直接使用p 万能指针即可,编译器也不会进行提示

	printf("test4  * p size of %d  \n\n",sizeof(p));
}

万能指针不需要强制转换,编译器也不会报错。那么我们可以看一下指针的大小,指针大小一般是8或者4,要看平台(操作系统)分配。

总结

void,不可以创建变量,无法分配内存。

void,可以限制函数返回值。

void,可以限制函数中的参数列表。

void,void*万能指针,可以不需要强制类型转换。

相关推荐
m0_敲代码的彭于晏1684 小时前
Vercel 前端部署与全栈开发实战指南
前端·状态模式
徐小夕4 小时前
花了3个月,我们做了一款 AI 版的“飞书文档”
前端·算法·github
贾伟康4 小时前
【化学实验室|17】HarmonyOS ArkTS 亮暗色与视觉令牌实战:集中颜色、间距和交互状态避免页面割裂
前端·移动开发·harmonyos·arkts·arkui
金銀銅鐵4 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(上)
java·后端·ai编程
福建佰胜张工5 小时前
SMC 薄型气爪 MHF2-16D1 深度解析:平行开闭、低剖面结构在自动化装配中的选型与落地
java·服务器·安全·自动化
Csvn5 小时前
SSR/SSG/ISR(上):峡谷与渲染策略的时间预算
前端
catoop5 小时前
API Key 设计与安全生成方案:结构拆解、数据库设计与 Java 实现
java·数据库·安全
Csvn5 小时前
SSR/SSG/ISR(下):可交互性、新鲜度与回源账
前端
system_error_x6 小时前
SpringBoot 集成 Thymeleaf 简洁入门
java·spring boot·后端
驭渊的小故事6 小时前
Spring AI Alibaba 实战:从maven依赖治理到声明式工具调用
java·人工智能·spring