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'表示字符串的结尾。

相关文章
|
2月前
|
编译器 C语言
void的指针类型
void的指针类型
12 0
|
3月前
C中的NULL指针
【2月更文挑战第6天】C中的 NULL指针。
17 2
|
7月前
C 中的 NULL 指针
C 中的 NULL 指针。
27 0
|
3月前
C中的NULL指针
C中的NULL指针。
19 2
|
1月前
C中的NULL指针
C中的NULL指针。
6 1
|
2月前
|
C语言
Void 指针类型
Void 指针类型
9 0
|
2月前
|
编译器 C语言
【C语言】深入理解NULL指针
【C语言】深入理解NULL指针
34 0
|
3月前
|
算法 安全 程序员
C++ “万能血“ void*指针
C++ “万能血“ void*指针
|
4月前
|
编译器
void * 类型指针
void * 类型指针
23 1
|
10月前
|
JavaScript 前端开发 测试技术
JavaScript:void(null) 运算符
JavaScript:void(null) 运算符