• 微信号
  • 微信号
您当前的位置:首页 > 学海无涯 > 茑语花香>C语言tips-NULL指针和void指针

C语言tips-NULL指针和void指针

孤峰 孤峰家 2023-06-15 197人阅读

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

1. void指针

1.1 解释

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

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

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

1.2 使用

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

#include <stdio.h>

int **in() {

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 <stdio.h>在这个头文件找到NULL的定义:#define NULL ((void *)0),可以看到NULL是一个指针"他的类型为void *值为0

2.2 使用

NULL的使用还是比较广泛的"我们很多时候需要先定义一个指针类型然后再让其指向"这样的话我们就可以先初始化让他指向一个NULL"否则初始化定义的指针它的值是随机的"鬼只知道它会指向什么"我可以看看以下例子

例子1"

#include <stdio.h> 

int **in(int argc, char* argv[])

{

// 初始化一个指针未给它初始化定义

char* str=NULL;

// 直接打印它所指向的值

printf("%s", str);

return 0;

}

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

#include <stdio.h>

int **in(int argc, char* argv[])

{

// 初始化一个指针未给它初始化定义

char* str;

// 直接打印它所指向的值

printf("%s", str);

return 0;

}

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

转载:感谢您阅览,转载请注明文章出处“来源从小爱孤峰知识网:一个分享知识和生活随笔记录的知识小站”。

链接:C语言tips-NULL指针和void指针http://www.gufeng7.com/niaolang/377.html

联系:如果侵犯了你的权益请来信告知我们删除。邮箱:119882116@qq.com

标签: