void指针和const笔记

             前言:之前学习C语言,不知是忘记了还是印象不够深刻,在之后写代码的一些日子里,用到void的时候只知道他是一个空类型,而const类型基本上没用过。这次第三次细致地再学一遍C的时候,对这两个知识点有了个重点的回顾,在此记录下易搞混的几个知识点。
  1. void指针
    void指针是一种不确定数据类型的指针变量,它可以通过强制类型转换让该变量指向任何数据类型的变量
    一般形式为: void * <指针变量名称> ;
    对于void指针,在没有强制类型转换之前,不能进行任何指针的算术运算

由上可知,void其实是一个空类型指针,不过他可以进行随意的数据类型的转换。
例如:void指针指向一个数组,只有通过(*int)(eg)来进行一个数据转换,才能进行算术运算。
void *malloc (size_t size);这个函数是返回值为空(NULL),也算是void 的一个应用
2. const变量(重要)-----------------------常量化变量值
(1)一般说明形式如下:
const <数据类型> 变量名 = [<表达式>] ; 常量化变量是为了使得变量的值不能修改

(2)const修饰指针 常量化指针目标表达式
一般说明形式如下:
const <数据类型> * <指针变量名称>[= <指针运算表达式>] ;
常量化指针目标是限制通过指针改变其目标的数值 ,但<指针变量>存储的地址值可以修改。
eg: const char *str;//可以修改str的存储地址但是指针指向的目标变量的数值不能进行修改。

(3)常量化指针变量
一般说明形式如下:
<数据类型> * const <指针变量名称>[= <指针运算表达式>] ;
使得<指针变量>存储的地址值不能修改。但可以通过 *<指针变量名称> 可以修改指针所指向变量的数值
eg: char * const str;//不可以修改str的存储地址,但是其指向变量值可以进行修改。

猜你喜欢

转载自blog.csdn.net/hua15617159775/article/details/84832952