void 指针和 NULL 指针|学习笔记

简介: 快速学习 void 指针和 NULL 指针

开发者学堂课程【你的第一门C语言课 void 指针和 NULL 指针】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/444/detail/5475


void 指针和 NULL 指针


内容介绍:

一、void 指针

二、NULL 指针

三、NULL 不是 NUL


一、void 指针

字面意思就是无类型

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

案例1:

#include

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

int main( )

{

int num = 1024 ;

int *pi = #

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

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:p,pv:ap\n" ,ps, pv) ;

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

return 0 ;

}


二、NULL 指针

定义 null 指针

#define NULL( (void*)0)

良好的编程习惯:

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

#include

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

相关文章
|
3月前
C中的NULL指针
【2月更文挑战第6天】C中的 NULL指针。
34 2
|
3月前
|
编译器 C语言
void的指针类型
void的指针类型
24 0
|
3月前
C中的NULL指针
C中的NULL指针。
32 2
|
3月前
|
存储 安全 C语言
void指针类型详解
void指针类型详解
25 2
|
3月前
|
存储 人工智能 算法
c++算法学习笔记 (9) 双指针
c++算法学习笔记 (9) 双指针
|
2月前
|
编译器 vr&ar C语言
C primer plus 学习笔记 第10章 数组和指针
C primer plus 学习笔记 第10章 数组和指针
|
3月前
C中的NULL指针
C中的NULL指针。
18 1
|
3月前
|
存储 安全 C语言
深入解析void指针类型
深入解析void指针类型
45 0
|
3月前
|
C语言
Void 指针类型
Void 指针类型
23 0
|
3月前
|
编译器 C语言
【C语言】深入理解NULL指针
【C语言】深入理解NULL指针
103 0