void指针和NULL指针

简介: 一、void指针二、NULL指针三、NULL不是NUL

void指针和NULL指针

 

内容介绍:

一、void指针

二、NULL指针

三、NULL不是NUL

 

 

一、void指针


字面意思就是无类型

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

 

案例1

#include <stdio .h>

int main( )

{

void a ;

return 0;

}

运行报错:

gcc test1.c && ./a.out

testl.c:1nFunction'main

test1.c :5:error: variable or field a decLared void

 

案例2

#incLude <stdio. h>

int main( )

{

int num = 1024 ;

int *pi = &num;

char *ps = "FishC";

void *pv;

 

pv = pi;

printf("pi:%p, pv:%p\n", pi, pv);

 

pv = ps;

printf("ps:%p, pv:%p\n", pS, pv) ;

 

return 0;

}

运行:

gcc test2.c && ./a.out

结果:

0S8T08X0:Ad10S8t08x0d

OE8x0Ad0E28P4qx0:Td

说明这样取地址是可行的

 

#include <stdio.h>

int main( )

{

int num = 1024;

int *pi = &num ;

char *ps = "FishC" ;

void * pv;

pv = pi;

printf("pi:%p, pv:%p\n" ,pi, pv);

printf("pv:%d\n"*(int *)pv);

ps = (char *)pv;

pv = ps;

printf("ps:ppv:ap\n"ps, pv) ;

printf("*pv:%s\n"(char *) pv) ;

return 0 ;

}

 

 

二、 NULL指针

定义null指针

#define NULL( (void*)0)

 

良好的编程习惯:

当你还不清楚要将指针初始化为什么地址时,请将它初始化NULL;在对指针进行解引用时,先检查该指针是否为NULL。这种策略可以为你今后编写大型程序节省大量的调试时间。

 

#include <stdio. h>

int main( )

{

int *p1;

int *p2 = NULL;

//巡控指针

printf("%d\n", *p1);

printf("%d\n", *p2);

return 0;

}

运行:

gcc test3.c && ./a.out

结果:

304989057

Segmentation fault

 

 

三、NULL不是NUL

NULL用于指针和对象,表示控制,指向一个不被使用的地址;'\0'表示字符串的结尾。

相关文章
C中的NULL指针
【2月更文挑战第6天】C中的 NULL指针。
171 2
|
编译器 C语言
void的指针类型
void的指针类型
181 0
C中的NULL指针
C中的NULL指针。
115 2
|
存储 安全 C语言
void指针类型详解
void指针类型详解
243 2
C中的NULL指针
C中的NULL指针。
105 1
|
算法 安全 程序员
C++ “万能血“ void*指针
C++ “万能血“ void*指针
396 1
|
存储 安全 C语言
深入解析void指针类型
深入解析void指针类型
353 0
|
C语言
Void 指针类型
Void 指针类型
235 0
|
编译器 C语言
【C语言】深入理解NULL指针
【C语言】深入理解NULL指针
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
1514 13