void指针的特性介绍

描述

1、指针介绍:

普通类型指针,包含两个方面,一个是指向此类型变量的地址,另外一个是指向变量的长度。 如下:

*int p:

p指针指向int类型变量,p++相当于地址加4(32位处理器)。

*unsigned char p:

p指针指向unsigned char类型变量,p++相当于地址加1。

2、void指针有以下特性

1、void型指针比较特殊,一般称作泛指针,它没有任何类型,更没有了长度属性。

2、任何类型指针都可以赋值给void类型指针,并且不需要强制转换,也不会出现编译警告或者编译错误。 但是反过来则不行,必须进行强制转换才能赋值。 强制转换为了告诉编译器类型以及长度。

3、void型指针在ANSI规则下不能自加自减等,如下代码都是错误的。

//ANSI规则下以下运算都是错误的
void *p;
int data;


p++;
p--;
p = p + 1;
data = *p;

4、但是void指针在GNU规则下可以自加自减等,GNU认为void类型指针长度和char类型长度一样。 鉴于两种规则的不同,我们编写代码是要做好兼容性,防止代码移植出现不可预知问题。

//GNU规则下以下运算正确
void *p;
p++;
p--;
p = p + 1;
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分