C语言指针高级部分:void指针和数据指针
2017-02-05 17:50
211 查看
概念
void指针数据指针
[b]void指针[/b]
void指针的基本概念
void的意思就是“无类型”,void指针则为“无类型指针”,void指针可以指向任何类型的数据。 所以void指针一般被称为通用指针或者泛指针,或者叫做万能指针
定义形式 :
void *p;
**在C语言中在任何时候都可以用void类型的指针来代替其他类型的指针,void指针可以指向任何数据类型的变量** **如果要通过void指针去获取它所指向的变量值时候,需要先将void指针强制类型转换成和变量名类型想匹配的数据类型指针后再进行操作;** 指针的强类类型转化: void *p; int *pa = (int *)p; 然后才能对原来的void指针指向的空间进行操作 任何类型的指针都可以赋值给void指针,无需进行强制类型转换; float f = 1.22f; float *p1 = &f; p = p1;//将float指针赋值被p
void指针的应用场合:
当进行纯粹的内存操作的时候,或者传递一个指向未定类型的指针时,可以使用void指针;
void* memcpy(void *addr1,void *addr2,size_t n);
该函数只进行纯粹的内存拷贝,包括NULL字符在内的任何内容都将被拷贝
1:对函数参数的限定 2:对函数返回的限定 3:void指针也常用作函数指针
代码如下所示:
#include<stdio.h> int main(void) { int num1 = 1; char char1 = 'b'; /*定义两个void指针类型*/ void *void_pointer_1; void *void_pointer_2; /*给不同的void指针指向不同的数据类型*/ void_pointer_1 = &num1; void_pointer_2 = &char1; printf("void_pointer_1:%d,void_pointer_2:%c\n",*((int *)void_pointer_1),*((char *)void_pointer_2)); void_pointer_2 = &num1; printf("void_pointer1:%d\n",*((int *)(void_pointer_2))); float float_1 = 1.25f; float* float_pointer = &float_1; void* void_float_pointer ; /**将float类型指针赋值给void类型指针*/ void_float_pointer = float_pointer; printf("float_pointer:%f\n",*((float *)void_float_pointer)); return 0; }
[b]数据指针[/b]
数据指针的概念:
在嵌入式编程当中,可能在特定的内存但愿读写内容,汇编有对应的MOV命令,而除了C/C++以外的编程语言基本上没有直接访问内存的能力
利用数据指针可直接 通过内存地址操作特定的内存
如:在地址0XFF00FF00对应的内存但愿中写入11 unsigned int *p = (unsigned int *)0XFF00FF00; *p = 11;
数据指针操作特定的内存的时候一定要谨慎,不是所有内存都可以操作,必须要对硬件比较了解后,才能进行操作(可能会出现段错误)
代码能够run,如果有需要的话,可以直接拉下来run一下,看看结构体数组是怎么进行初始化操作和使用的。谢谢大家的访问,如有写的不好的地方,希望大家能够及时的提出来,谢谢观看
相关文章推荐
- iOS开发学习笔记 2-4 C语言部分 指针
- 机房收费系统高级数据查询之分组查询基础函数部分
- c语言:高级指针话题
- Eclipse 中的 JFace 数据绑定,第 3 部分: 使用高级功能(15/19)
- C语言之void类型及void指针 分类: C/C++ 2015-07-13 11:24 8人阅读 评论(0) 收藏
- C语言探索之旅 | 第二部分第二课:进击的指针,C语言的王牌!
- 嵌入式linux之高级c语言专题--指针2
- c语言高级指针理解及应用(上)
- c语言高级指针理解及应用(下)
- C语言之高级指针
- Eclipse 中的 JFace 数据绑定,第 3 部分: 使用高级功能(16/19)
- C语言利用 void 类型指针实现面向对象类概念与抽象。
- C++ 高级数据类型(三)—— 指针
- 第17章 高级数据表示 17.7 二叉搜索树 (第三部分 完整包)
- 【学习ios之路:C语言】②高级指针应用
- C语言之void类型及void指针
- 4.4、C语言复杂表达式和指针高级应用
- C语言void泛型指针
- 联合与枚举 、 高级指针 、 C语言标准库(一)
- c语言(高级指针)