1. void指针 1.1 解释最近因为工作需要开始重新学c语言,越学越发现c语言深不可测,当初用python轻轻松松处理的一些数据,但是c语言写起来却异常的复杂,这个板块就记录一下我的c语言复习之路
孟村ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
void
用在函数定义中可以表示函数没有返回值或者没有形式参数,用在这里表示指针指向的数据的类型是未知的,而void *
表示一个有效指针,它确实指向实实在在的数据,只是数据的类型尚未确定,在后续使用过程中一般要进行强制类型转换。
void指针我们把它称为通用指针,就是可以指向任意类型的数据,也就是说,任何类型的指针都可以赋值给void指针
1.2 使用比较常见的malloc函数默认返回的类型就为
void*
,malloc函数原型:void *__cdecl malloc(size_t _Size);
在使用void指针的时候需要强制类型转换
#includeint main() {int num = 1024;
int *pi = #
char *ps = "Fishc";
void *pv;
pv= pi;
printf("%d\n", *(int *)pv);
pv = ps;
printf("%s", (char *)pv);
return 0;
}
2. NULL指针
2.1 解释2.2 使用NULL 是“零值、等于零”的意思,在 C 语言中表示空指针。从表面上理解,空指针是不指向任何数据的指针,是无效指针,程序使用它不会产生效果,我们可以在
#include
在这个头文件找到NULL
的定义:#define NULL ((void *)0)
,可以看到NULL是一个指针,他的类型为void *
值为0
NULL的使用还是比较广泛的,我们很多时候需要先定义一个指针类型然后再让其指向,这样的话我们就可以先初始化让他指向一个
NULL
,否则初始化定义的指针它的值是随机的,鬼只知道它会指向什么,我可以看看以下例子
例子1:
#includeint main(int argc, char* argv[])
{// 初始化一个指针未给它初始化定义
char* str=NULL;
// 直接打印它所指向的值
printf("%s", str);
return 0;
}
我们在clion输出可以发现,直接可以打印一个
(null)
#includeint main(int argc, char* argv[])
{// 初始化一个指针未给它初始化定义
char* str;
// 直接打印它所指向的值
printf("%s", str);
return 0;
}
而运行以上代码,我们可以发现没有任何输出,我们可以考虑其实
printf
是有对NULL指针做处理的,但是如果你指向未知的地址,就不会有任何提示输出,出现错误。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网站标题:C语言tips-NULL指针和void指针-创新互联
当前URL:http://lswzjz.com/article/dohphe.html