C语言tips-NULL指针和void指针
创始人
2024-02-17 10:23:22
0

0.写在最前

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

1. void指针

1.1 解释

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

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

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

1.2 使用

在使用void指针的时候需要强制类型转换

#include int 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:

#include int main(int argc, char* argv[])
{// 初始化一个指针未给它初始化定义char* str=NULL;// 直接打印它所指向的值printf("%s", str);return 0;
}

在这里插入图片描述

我们在clion输出可以发现,直接可以打印一个(null)

#include int main(int argc, char* argv[])
{// 初始化一个指针未给它初始化定义char* str;// 直接打印它所指向的值printf("%s", str);return 0;
}

而运行以上代码,我们可以发现没有任何输出,我们可以考虑其实printf是有对NULL指针做处理的,但是如果你指向未知的地址,就不会有任何提示输出,出现错误。

相关内容

热门资讯

央行:实施一次性信用修复政策 人民财讯12月22日电,为积极应对新冠疫情后续影响,支持信用受损但积极还款的个人高效便捷重塑信用,助...
中国人民银行发布关于实施一次性... 中国人民银行发布关于实施一次性信用修复政策有关安排的通知,其中提到,对于2020年1月1日至2025...
支持个人信用重塑!央行发布一次... 本文转自【新华社】; 为支持信用受损但积极还款的个人高效便捷重塑信用,12月22日中国人民银行对外...
银河证券:短期关注防御性板块配... 银河证券指出,随着2026年即将开启,A股市场进入跨年布局的关键窗口,关注元旦前后的小躁动行情。20...
“以帮代赔”化解马啃秸秆纠纷 因主人不在家疏于看管,马儿多次跑到别人家地里啃食玉米秸秆。12月18日,娄烦县公安局盖家庄派出所民警...
怎样选到靠谱刑事律师?赵可律师... 靠谱刑事律师的衡量标准在寻找靠谱的刑事律师时,有多个衡量标准。 专业能力是关键,律师需具备扎实的法学...
吉林省刑辩律师哪家强?辛明律师... 吉林省刑辩律师的重要性在吉林省,刑事案件的复杂性和多样性使得刑辩律师的作用愈发凸显。 他们不仅要熟悉...
江苏多地推出公租房调换政策 就... 原题:就医养老更方便 按需调换更贴心 公租房也能“换着住” 公共租赁房是由政府提供支持,为中低收入困...
法治日报:跨境犯罪治理需要更完... 跨境犯罪呈现多重犯罪形态交织特征 各国代表建言 跨境犯罪治理需要更完善的司法保障 编者按 携手30年...