网站建设资讯

NEWS

网站建设资讯

C语言tips-NULL指针和void指针-创新互联

.写在最前

最近因为工作需要开始重新学c语言,越学越发现c语言深不可测,当初用python轻轻松松处理的一些数据,但是c语言写起来却异常的复杂,这个板块就记录一下我的c语言复习之路

孟村ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
1. void指针 1.1 解释

void用在函数定义中可以表示函数没有返回值或者没有形式参数,用在这里表示指针指向的数据的类型是未知的,而void *表示一个有效指针,它确实指向实实在在的数据,只是数据的类型尚未确定,在后续使用过程中一般要进行强制类型转换。

void指针我们把它称为通用指针,就是可以指向任意类型的数据,也就是说,任何类型的指针都可以赋值给void指针

比较常见的malloc函数默认返回的类型就为void*,malloc函数原型:void *__cdecl malloc(size_t _Size);

1.2 使用

在使用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 解释

NULL 是“零值、等于零”的意思,在 C 语言中表示空指针。从表面上理解,空指针是不指向任何数据的指针,是无效指针,程序使用它不会产生效果,我们可以在#include在这个头文件找到NULL的定义:#define NULL ((void *)0),可以看到NULL是一个指针,他的类型为void *值为0

2.2 使用

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指针-创新互联
标题路径:http://njwzjz.com/article/dohphe.html