0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

void指针的特性介绍

CHANBAEK 来源:硬件工程师技术干货 作者:硬件工程师技术干 2023-03-14 14:44 次阅读

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;
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 指针
    +关注

    关注

    1

    文章

    478

    浏览量

    70499
  • 变量
    +关注

    关注

    0

    文章

    613

    浏览量

    28319
  • 编译
    +关注

    关注

    0

    文章

    650

    浏览量

    32793
  • GNU
    GNU
    +关注

    关注

    0

    文章

    143

    浏览量

    17470
  • void
    +关注

    关注

    0

    文章

    23

    浏览量

    9851
收藏 人收藏

    评论

    相关推荐

    void指针简述

    为何在这里单独提到空指针类型呢?主要是因为该指针类型很特殊。void类型很容易让人想到是空的意思,但对于指针而言,其并不是指空,而是指不确定。在很多时候
    的头像 发表于 09-09 08:57 1664次阅读
    <b class='flag-5'>void</b><b class='flag-5'>指针</b>简述

    C语言中void指针的基本认识及典型应用

    C语言中,*类型就是指针类型,比如 int *p,double *q,虽然是不一样的指针,但是大小却一样sizeof(p) == sizeof(q),因为它们都是同一种类型*类型的。C语言是强类型的语言,对类型的区分十分严格,不同的类型占据的空间大小不同,地址偏移量也会不
    发表于 02-01 09:26 1052次阅读

    【设计技巧】指针的使用注意事项:空指针指针赋值、void *指针

    的类型多么复杂,比如一个特别大的结构体,它的指针和一个 char型指针的大小本质上是一样的,因为指针就是起始地址。 正式由于这个原因,(void )型
    发表于 08-20 08:30

    什么是void指针void指针有何功能

    [导读] 要比较灵活的使用C语言实现一些高层级的框架时,需要掌握一些进阶编程技巧,这篇来谈谈void指针的一些妙用。测试环境采用 IAR for ARM 8.40.1什么是void指针
    发表于 02-21 06:01

    C语言voidvoid指针深层探索

    1.概述 本文将对void关键字的深刻含义进行解说,并详述voidvoid指针类型的使用方法与技巧。 2.void的含义
    发表于 09-21 11:36 166次下载

    C语言指针函数和函数指针详细介绍

    C语言指针函数和函数指针详细介绍。。。。。。。
    发表于 03-04 15:27 5次下载

    深入了解void指针背后的机理

    当使用关键字void声明指针变量时,它将成为通用指针变量。任何数据类型(char,int,float等)的任何变量的地址都可以赋值给void指针
    发表于 05-06 09:49 1335次阅读

    浅谈void指针的高阶用法

    要比较灵活的使用C语言实现一些高层级的框架时,需要掌握一些进阶编程技巧,这篇来谈谈void指针的一些妙用。测试环境采用 IAR for ARM 8.40.1 什么是void指针
    的头像 发表于 08-09 15:54 1602次阅读
    浅谈<b class='flag-5'>void</b> 型<b class='flag-5'>指针</b>的高阶用法

    void指针的高阶用法,你掌握了吗?

    关注+星标公众号,不错过精彩内容转自 | 嵌入式客栈要比较灵活的使用C语言实现一些高层级的框架时,需要掌握一些进阶编程技巧,这篇来谈谈void指针的一些妙用。测试环境采用 IAR for ...
    发表于 12-02 12:36 8次下载
    <b class='flag-5'>void</b> 型<b class='flag-5'>指针</b>的高阶用法,你掌握了吗?

    STM32编程:void指针高阶用法举例,设计一个通用掉电存储子系统

    [导读] 要比较灵活的使用C语言实现一些高层级的框架时,需要掌握一些进阶编程技巧,这篇来谈谈void指针的一些妙用。测试环境采用 IAR for ARM 8.40.1什么是void指针
    发表于 12-27 18:47 10次下载
    STM32编程:<b class='flag-5'>void</b><b class='flag-5'>指针</b>高阶用法举例,设计一个通用掉电存储子系统

    STM32编程:void指针高阶用法

    [导读] 要比较灵活的使用C语言实现一些高层级的框架时,需要掌握一些进阶编程技巧,这篇来谈谈void指针的一些妙用。测试环境采用 IAR fo...
    发表于 02-07 11:14 2次下载
    STM32编程:<b class='flag-5'>void</b><b class='flag-5'>指针</b>高阶用法

    C语言-void类型作为万能指针类型

    空类型`。 void abc; //这是错误的 但是`void`是可以定义指针的,`void*`表示万能型指针类型,可以与任何
    的头像 发表于 08-14 10:04 1735次阅读

    一文揭秘C语言的void指针

    void *表示一个“不知道类型”的指针,也就不知道从这个指针地址开始多少字节为一个数据。和用int表示指针异曲同工,只是更明确是“指针”。
    的头像 发表于 02-02 17:18 1507次阅读

    什么是void指针

    C语言中,*类型就是指针类型,比如 int *p,double *q,虽然是不一样的指针,但是大小却一样sizeof(p) == sizeof(q),因为它们都是同一种类型*类型的。C语言是强类型的语言,对类型的区分十分严格,不同的类型占据的空间大小不同,地址偏移量也会不
    的头像 发表于 02-13 15:02 1342次阅读

    如何理解C++中的void

    首先void*中的void代表一个任意的数据类型,"星号"代表一个指针,所以其就是一个任意数据类型的指针
    的头像 发表于 03-30 15:01 4075次阅读
    如何理解C++中的<b class='flag-5'>void</b>?