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
+关注
关注
0文章
143浏览量
17470 -
void
+关注
关注
0文章
23浏览量
9851
发布评论请先 登录
相关推荐
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语言void及void指针深层探索
1.概述 本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。 2.void的含义
发表于 09-21 11:36
•166次下载
深入了解void指针背后的机理
当使用关键字void声明指针变量时,它将成为通用指针变量。任何数据类型(char,int,float等)的任何变量的地址都可以赋值给void指针
发表于 05-06 09:49
•1335次阅读
浅谈void 型指针的高阶用法
要比较灵活的使用C语言实现一些高层级的框架时,需要掌握一些进阶编程技巧,这篇来谈谈void指针的一些妙用。测试环境采用 IAR for ARM 8.40.1 什么是void指针
void 型指针的高阶用法,你掌握了吗?
关注+星标公众号,不错过精彩内容转自 | 嵌入式客栈要比较灵活的使用C语言实现一些高层级的框架时,需要掌握一些进阶编程技巧,这篇来谈谈void指针的一些妙用。测试环境采用 IAR for ...
发表于 12-02 12:36
•8次下载
STM32编程:void指针高阶用法举例,设计一个通用掉电存储子系统
[导读] 要比较灵活的使用C语言实现一些高层级的框架时,需要掌握一些进阶编程技巧,这篇来谈谈void指针的一些妙用。测试环境采用 IAR for ARM 8.40.1什么是void指针
发表于 12-27 18:47
•10次下载
STM32编程:void指针高阶用法
[导读] 要比较灵活的使用C语言实现一些高层级的框架时,需要掌握一些进阶编程技巧,这篇来谈谈void指针的一些妙用。测试环境采用 IAR fo...
发表于 02-07 11:14
•2次下载
C语言-void类型作为万能指针类型
空类型`。 void abc; //这是错误的 但是`void`是可以定义指针的,`void*`表示万能型指针类型,可以与任何
一文揭秘C语言的void指针
void *表示一个“不知道类型”的指针,也就不知道从这个指针地址开始多少字节为一个数据。和用int表示指针异曲同工,只是更明确是“指针”。
什么是void指针
C语言中,*类型就是指针类型,比如 int *p,double *q,虽然是不一样的指针,但是大小却一样sizeof(p) == sizeof(q),因为它们都是同一种类型*类型的。C语言是强类型的语言,对类型的区分十分严格,不同的类型占据的空间大小不同,地址偏移量也会不
评论