转载--void指针(void *的用法)】的更多相关文章

转自:jimmy 指针有两个属性:指向变量/对象的地址和长度 但是指针只存储地址,长度则取决于指针的类型 编译器根据指针的类型从指针指向的地址向后寻址 指针类型不同则寻址范围也不同,比如: int*从指定地址向后寻找4字节作为变量的存储单元 double*从指定地址向后寻找8字节作为变量的存储单元 1.void指针是一种特别的指针    void *vp    //说它特别是因为它没有类型    //或者说这个类型不能判断出指向对象的长度 2.任何指针都可以赋值给void指针    type *…
首先看一段测试代码: #include <stdio.h> int void_test(void* data) { ; num = *(int*)data; printf("num = %d\n", num); } int main() { int val; val = ; void_test(&val); ; } 将以上代码编译并运行,输出结果为: num = 123 下面摘录对void类型指针使用方法总结. 1.void *可以指向任何类型的数据 2. void…
指针有两个属性:指向变量/对象的地址和长度 但是指针只存储地址,长度则取决于指针的类型 编译器根据指针的类型从指针指向的地址向后寻址 指针类型不同则寻址范围也不同,比如: int*从指定地址向后寻找4字节作为变量的存储单元 double*从指定地址向后寻找8字节作为变量的存储单元 1.void指针是一种特别的指针    void *vp    //说它特别是因为它没有类型    //或者说这个类型不能判断出指向对象的长度 2.任何指针都可以赋值给void指针    type *p;    vp=…
void*指针 void关键字表示“空类型”的概念.但是,这里的“空类型”不表示“任意类型”,而是表示不存在的意思,也就是说C/C++不允许你写语句void a,不存在类型为void的东西. void*表示“空类型指针”,与void不同,void*表示“任意类型的指针”或表示“该指针与一地址值相关,但是不清楚在此地址上的对象的类型”. 类型转换 C风格转换: int i; double d; i = (int) d; //或 i = int (d); C风格转换在C++中是适用的.但是C++也提…
由容器PStash的使用者,负责清除容器中的所有指针.所以用户必须记住放到容器中的是什么类型,在取出时,把取出的void指针转换成对应的类型指针,然后 'delete 转换后的对象指针',才能在清除时调到对象的析构函数. 析构函数的作用: 确保对象的各部分被正确的清除,及做一些用户指定的其他清理工作. 1 头文件PStash.h #ifndef PSTASH_H #define PSTASH_H class PStash { int capacity; int next; void** stor…
转载 https://www.cnblogs.com/pengyingh/articles/2407267.html 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据. void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义: void a; 这行语句编译时会出错,提示“illegal use of type 'void'”.不过,即使void a的编译不会出错,它也没有任何实际意义.…
C/C++语言void及void指针深层探索 1.概述许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧. 2.void的含义void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据.void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义:void a;这行语句编译时会出错,提示“…
void作为指针时可以用任意类型的的指针值都可以给它进行赋值和传递,但是输出时必须时显性输出 代码如下: #include<cstdio> #include<iostream> #include<algorithm> using namespace std; int main() { char a='s'; int m=456; void* pa; pa=&a; cout<<*(char*)pa<<endl; pa=&m; cou…
一.不能动的“地址”—void指针 1.1 void指针初探 void *表示一个“不知道类型”的指针,也就不知道从这个指针地址开始多少字节为一个数据.和用int表示指针异曲同工,只是更明确是“指针”. 因此void*只能表示一个地址,不能用来&取值,也不能++--移动指针,因此不知道多少字节是一个数据单位. ,,,,}; void* ptr1 = nums; //int i = *ptr1; // 对于void指针没法直接取值 int* ptr2 = (int*)nums; printf(&qu…
原文转载地址:http://blog.csdn.net/sunchaoenter/article/details/6587426 增加自己的想法,作为笔记. 1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧. 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据. void几乎只有“注释…
本文转载自:http://blog.csdn.net/renren900207/article/details/20769503 void类型指针(如void *p)所指向的数据类型不是确定的,或者说,可以是任何类型的.void类型指针中的数据不能访问,如果非要访问的话,可以通过显式转换将void类型指针转换为与所指向的数据类型相符的类型. 1.任何类型的指针都可以显式转换为void类型,且不会丢失数据. 2.void类型指针可以通过显式转换为具有更小或相同存储对齐限制的指针,但数据可能失真.所…
转载自:http://blog.csdn.net/lee_shuai 指针有两个属性:指向变量/对象的地址和长度,但是指针只存储地址,长度则取决于指针的类型:编译器根据指针的类型从指针指向的地址向后寻址,指针类型不同则寻址范围也不同,比如: int*从指定地址向后寻找4字节作为变量的存储单元 double*从指定地址向后寻找8字节作为变量的存储单元 void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型. 1  void的作用 1)   对函数返回的限定 a) 当函数不需要返…
void的含义 void即"无类型",void *则为"无类型指针",可以指向任何数据类型. void指针使用规范 ①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值.例如: int * pint; void *pvoid; pvoid = pint; /* 不过不能 pint= pvoid; */ 如果要将pvoid赋给其他类型指针,则需要强制类型转换如:pint= (int *)pvoid; ②在ANSIC标准中,不允许对void…
许多初学者对C中的void 和void 的指针类型不是很了解.因此常常在使用上出现一些错误,本文将告诉大家关于void 和void 指针类型的使用方法及技巧. 1.首先,我们来说说void 的含义: void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据. void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义: void a; 这行语句编译时会出错,提示“illegal use of type ’void’”…
转自:http://www.lanou3g.com/blog/sort/SelfiOS/page/78 1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧.   2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据. void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个voi…
指针有两个属性:指向变量/对象的地址 和长度 但是指针只存储地址,长度则取决于指针的类型 编译器根据指针的类型从指针指向的地址向后寻址 指针类型不同则寻址范围也不同,比如: int*从指定地址向后寻找4字节作为变量的存储单元 double*从指定地址向后寻找8字节作为变量的存储单元 1.void指针是一种特别的指针    void *vp   //说它特别是因为它没有类型   //或者说这个类型不能判断出指向对象的长度 2.任何指针都可以赋值给void指针   type *p;   vp=p;…
void 指针的步长为1,而其他类型的指针的步长与其所定义的数据结构有关. example: 1 #include<stdio.h> 2 main() 3 { 4 int a[10]; 5 int *m=a; 6 void *n=(void *)a; 7 m++; 8 n++; 9 printf("%x\n%x\n%x",a,m,n);} 输出结果为: 69255b90 69255b94 69255b91…
1.概述 许多初学者对C/C 语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并 详述void及void指针类型的使用方法与技巧. 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据. void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义: void a; 这行语句编译时会出错,提示“illegal use of typ…
http://blog.csdn.net/geekcome/article/details/6249151 ----------- void的含义 void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型.void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值.例如: int * pint; void *pvoid; pvoid = pint; /* 不过不能 pint= pvoid; */ 如果要将pvoid赋给其他类型指针,则…
一个指针可以被声明为void类型,比如void *x.一个指针可以被赋值为NULL.一个指针变量声明之后但没有被赋值,叫做未初始化指针. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 int *uninit; // int指针未初始化 int *nullptr = NULL; // 初始化为NULL void *vptr; // void指针未初始化 int val = 1; int *iptr; int *castptr…
原文 : http://blog.csdn.net/yyyuhan/article/details/3153290 1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧.2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据. void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个…
在C和C++的语言中常常有这几个概念: NULL指针.空指针.Void *指针.野指针(Wild Pointer)甚至垂悬指针(Dangling Pointer). 1.NULL指针,一般用于指向一个预留的值,不一定是0,通常是没有真正意义上的实体.被称作空指针.所以任何对象或者函数的地址都不可能是空指针. 常用于 初始化一个指针 如 int *ptr = NULL; 或者判断内存分配是否失败,if(NULL == ptr) …… 或者一个指针被delete或者free之后, char *dp…
原文网址:http://www.cnblogs.com/pengyingh/articles/2407267.html 1.概述 许多初学者对C/C 语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧. 2.void的含义 void的字面意思是"无类型",void * 则为"无类型指针",void * 可以指向任何类型的数据. void几乎只有"…
C++提供了一种特殊的指针类型void*,它可以保存任何类型对象的地址: void*表明该指针与一地址值相关,但不清楚存储在此地址上的对象的类型. void*指针只支持几种有限的操作: 1)与另一个指针进行比较: 2)向函数传递void*指针或者从函数返回void*指针: 3)给另一个void*指针赋值. 不允许使用void*指针操纵它所指向的对象.…
原函数是<The C programint  language >5.11文本行排序的程序,如下: void qsort(void *v[], int left, int right, int (*comp)(void *,void *)) { int i,last; if( left >= right) return; swap(v,left,(left+right)/2); last = left; for(i = left + 1; i <= right; ++i) if(c…
static关键字1.修饰局部变量,延长局部变量的生命周期.使变量成为静态局部变量,在编译时就为变量分配内存,直到程序退出才释放存储单元.2.修饰全局变量,限制全局变量的使用范围为本文件中.全局变量默认为静态全局变量,在编译时就为变量分配内存,直到程序退出才释放存储单元.3.修饰函数,限制函数的使用范围为本文件中.使函数成为静态函数,对函数的连接方式产生影响.如果想让内部函数被外界引用,可在函数前添加extern修饰. void与void *(void指针)1.void 即‘无类型’,void…
void指针:主要是便于传递不同类型的参数 const指针: const char *p :const 在* 的左边表示指向一个常量指针:表示指向的内容不可变(*p不能变,p可以改变) int a = 3; int b = 4; const int *p = &a; p=&b;允许:但是*p = 5是不允许的: char * const p:const在* 的右边表示一个指针常量 int a = 3; int b = 4; char * const p = &a; p=&b…
1. 函数指针:返回类型(*函数名)(参数表) 2. 使用typdef void(*fun)(void) typedef的功能是定义新的类型.第一句就是定义了一个MyFun的类型,并定义这种类型为 指向某种函数的指针,这种函数以一个int为参数并返回char类型.…
void的含义 void即“无类型” ,void*则为“无类型指针”,可以指向任何数据类型,所以又叫做“通用指针”. void指针使用规范 ①void指针可以只想任意类型的数据,亦即可用任意数据类型的指针对void指针赋值.例如: int* pint; void* pvoid; pvoid=pint;//不过不能pint=pvoid; 如果要将pvoid赋给其它类型指针,则需要强制类型转换如:pint=(int*)pvoid; ②在ANSI C 标准中,不允许对void指针进行算术运算如pvoi…
问题: 在刚接触typedef void (*pfun)(void) 这个结构的时候,存在疑惑,为什么typedef后只有一"块"东西,而不是两"块"东西呢?那是谁"替代"了谁啊?我总结了一下,一方面是对typedef的概念不清晰,另一方面受了#define的影响,犯了定向思维的错误. 概念理解: -typedef 只对已有的类型进行别名定义,不产生新的类型: -# define只是在预处理过程对代码进行简单的替换. 清晰了解两个概念后,发现它们…