`

关于 void指针(void *)

阅读更多

 

先介绍下void指针:

 

其中的第三个参数类型为void指针.我们知道一个指针有两个属性:指向变量或对象的"地址"和"长度".但是指针只存储"地址".

长度则取决于指针的类型.编辑器根据指针的类型从指针的"地址"向后寻址,指针不同,则寻址范围也不同.比如:

int * 从指定地址向后寻址4个字节作为变量的存储单元; double * 则从指定的地址向后寻址8个字节作为变量的存储单元.

 

1.void指针是特别的指针,因为它没有类型,也就是我们不知道其长度.

    void *vp;

2.任何指针都可以赋值给void指针.

     type *tp;

     vp = tp;//不需要转换.

                 //只获得tp的地址.

3.void指针转赋值给其他类型的指针时需要转换.

    type *tp = (type *)vp;//这样便获得了地址和长度.

4.void指针不能复引用,因为void指针并不知道指针的长度.

    *vp;//错误的

5.void指针不能参加指针运算,除非先对其进行转换.

 

参考:http://www.cppblog.com/dragon/archive/2008/09/02/60760.aspx

---------------------------------------------------------------------------------------------------------------------

 

下面我们在来看看cocos2d中的:

CCCallFuncND *callFun = [CCCallFuncND actionWithTarget:(id) selector:(SEL) data:(void *)];

 

我们可以看到第三个参数的类型是void指针.

对于obj-c的对象指针来说,可以直接将其作为参数传给data.我们前面的2中说了,任何指针都可以赋值给void指针,但是要注意,丢了类型.

 

例子1:

NSString *str = @"hello world";

CCCallFuncND *ac =

[CCCallFuncND actionWithTarget:self selector:@selector(move:data:) data:tempString ];

 

- (void)move(id)sender data:(void *)data {

      NSString *str = (NSString *)data;// 我们可以将void指针转换为NSString.

}

 

 

例子2:

int t = 100;

CCCallFuncND *ac =

[CCCallFuncND actionWithTarget:self selector:@selector(move:data:) data:(void *)t ];//这里不加一个转换xcode会给出警告.

 

- (void)move(id)sender data:(void *)data {

      int t = (int)data;//如果不转换xcode会给出警告.

}

 

 

 

 

分享到:
评论

相关推荐

    void指针小结

    - **void指针**:`void*`是一种特殊类型的指针,它可以指向任何类型的数据。这使得`void*`成为一种通用指针类型,常用于实现动态类型转换等功能。 #### 三、void指针详解 `void*`作为一种特殊的指针类型,在实际...

    C语言void及void指针深层探索.doc

    C 语言 void 及 void 指针深层探索 C 语言中的 void 关键字和 void 指针类型是初学者容易混淆和误解的概念,本文将对 void 关键字的深刻含义进行解说,并详述 void 及 void 指针类型的使用方法与技巧。 void 的...

    C/C++语言void及void指针深层探索

    C/C++语言void及void指针深层探索 void是一个非常重要的关键字在C/C++语言中,它的设计哲学蕴藏着丰富的思想。作为一名程序设计人员,对void的理解和使用正确性直接影响到程序的正确性和可读性。 1. void的含义 ...

    void及void指针含义的深刻解析

    ### void及void指针含义的深刻解析 #### void的基本概念 `void` 是 C/C++ 语言中的一个关键字,它的字面意思就是“无类型”或“空类型”。`void` 在 C/C++ 编程中有着独特的用途,主要用于描述没有特定数据类型的...

    void 指针详解(用法、注意事项等等 )

    C++ 允许将任何类型的指针赋给 void*, 但不允许将 void 指针赋与给任何其他类型的指针。必须显示的类型转换。 在 ANSI 标准中,void 指针不能进行算法操作,即下列操作都是不合法的: void * pvoid; pvoid++; // ...

    void指针void指针void指针void指针

    ### void指针的基础概念与应用 在C语言中,`void`指针是一种特殊类型的指针,它不指向任何特定类型的变量或数据结构。`void`指针的主要用途在于其灵活性,可以用来存储任何类型的数据地址,并且在进行类型转换时不...

    深入理解void以及void指针的含义

    void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int *pint;void *pvoid;pvoid = pint; /* 不过不能 pint = pvoid; */如果要将pvoid赋给其他类型指针,则需要...

    C语言void及void指针深层探索

    3. **`void`指针**:`void*`是一种通用指针类型,它可以指向任何数据类型的对象,从而提供了一种灵活的数据操作机制。然而,`void*`不能直接用于算法操作(如递增、递减),除非将其转换为具体的类型指针。 #### `...

    void指针的深刻理解.docx

    【void关键字和void指针的理解】 在C/C++编程中,`void`是一个非常重要的关键字,它具有特殊的含义。`void`表示“无类型”,它主要用于两种情况:函数的返回类型和函数的参数类型。 1. **void的含义**: - 当用于...

    拓展知识7-1 void指针.pdf

    1. **void指针的定义** 定义一个`void`指针的基本语法是:`void *指针变量名;`例如: ```c void *ptr; ``` 这样的指针变量`ptr`被称为泛指针或通用指针,因为它可以存储任何类型的数据的地址。 2. **void指针...

    void_指针 使用

    ### void指针深入解析 #### 一、引言 在C/C++编程语言中,`void`关键字及其关联的`void`指针类型是经常被提及但又常常被忽视的概念。初学者往往容易忽略`void`及其指针类型的重要性和用途,导致在实践中遇到不少...

    C语言程序设计(第2版)-2期 拓展知识7-1 void指针.pdf

    在C语言中,void指针是一种特殊的指针类型,它不绑定特定的数据类型,因此具有很高的灵活性。在处理多种类型数据或需要进行泛型编程时,void指针扮演着重要的角色。下面我们将深入探讨void指针的定义、使用以及相关...

    void指针的深刻理解.pdf

    在C/C++编程中,`void`关键字和`void`指针扮演着至关重要的角色,尤其是在处理不同类型数据和函数参数时。本文将深入探讨`void`的含义以及`void`指针的使用方法。 首先,`void`表示“无类型”,意味着它不关联任何...

    void及void指针深层探索[文].pdf

    "void及void指针深层探索" void 是 C/C++ 语言中的一个关键字,具有特殊的含义和用途。 Void 的字面意思是“无类型”,void * 则为“无类型指针”,void * 可以指向任何类型的数据。然而,void 几乎只有“注释”和...

    程序设计-void指针的使用.pptx

    "程序设计-void指针的使用" void 指针类型是 C 语言中的一种特殊的指针类型,它的基类型为 void,表示不指向任何特定的数据类型。void 指针类型的出现使得程序设计变得更加灵活和强大。 void 指针类型的特点是,...

    对void指针的理解.pdf

    用void* 定义一个void类型的指针,它不指向任何类型的数据,意思是,void*指针“指向空类型”或“不指向确定的类型”,而不要理解为void*指针能指向“任何的类型”数据。简而言之:void*只提供一个地址,没有指向。

    拓展知识7-1 void指针.docx

    在C语言中,`void`指针是一种特殊的指针类型,它不绑定到任何特定的数据类型。`void`指针允许我们存储任何类型数据的地址,但同时也需要我们在使用时进行类型转换,以确保正确地访问和操作这些数据。下面将详细讨论`...

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

    ### 深入了解void指针背后的机理 #### 一、void指针的基本概念 在C/C++编程中,`void`指针通常被称为通用指针或泛型指针。这种指针的设计目的是为了提供一种灵活性高的机制,使得程序员能够以一种类型无关的方式...

Global site tag (gtag.js) - Google Analytics