void*和void类型】的更多相关文章

许多初学者对C中的void 和void 的指针类型不是很了解.因此常常在使用上出现一些错误,本文将告诉大家关于void 和void 指针类型的使用方法及技巧. 1.首先,我们来说说void 的含义: void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据. void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义: void a; 这行语句编译时会出错,提示“illegal use of type ’void’”…
转载自:http://blog.csdn.net/lee_shuai 指针有两个属性:指向变量/对象的地址和长度,但是指针只存储地址,长度则取决于指针的类型:编译器根据指针的类型从指针指向的地址向后寻址,指针类型不同则寻址范围也不同,比如: int*从指定地址向后寻找4字节作为变量的存储单元 double*从指定地址向后寻找8字节作为变量的存储单元 void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型. 1  void的作用 1)   对函数返回的限定 a) 当函数不需要返…
void *与id类型相互转换 在MRC下,void *与id类型相互转换完全没问题. id obj = [[NSObject alloc] init]; void *p = (void *)p; obj = (id)p; 但是在ARC下,这种直接转换编译器会报错,需要使用__bridge关键字: id obj = [[NSObject alloc] init]; //引用计数为1 void *p = (__bridge void *)obj; //引用计数仍为1 id obj2 = (__br…
ByReference类有很多子类,这些类都非常有用. ByteByReference.DoubleByReference.FloatByReference. IntByReference.LongByReference. NativeLongByReference.PointerByReference. ShortByReference. W32API.HANDLEByReference.X11.AtomByReference.X11.WindowByReference ByteByRefer…
|   版权声明:本文为博主原创文章,未经博主允许不得转载. void的类型是无类型的数据,void*表示无类型的指针.其中void*可以指向任何数据类型的指针. void类型的用法: (1).void类型不能直接声明变量,因为对于一个无类型的变量,编译器是不知道要为这个数据分配多少个内存单元,如下: int main(void) { void a; //错误 return 0; } 如果存在上面例子中的语句的话,编译器将报错,如下图: (2).void的类型作为函数的返回值时,表明该函数不需要…
#include<stdio.h> void f(void *a) { printf("%d\n",a); } int main() { int b=10; f(b); return 0; } ///上面程序在c编译器中不能打印出来的,因为默认情况下,void不能转化为int型,而int型却可以转化. #include<stdio.h> void f(void *a) { printf("%d\n",a); } int main() { in…
问题: 在刚接触typedef void (*pfun)(void) 这个结构的时候,存在疑惑,为什么typedef后只有一"块"东西,而不是两"块"东西呢?那是谁"替代"了谁啊?我总结了一下,一方面是对typedef的概念不清晰,另一方面受了#define的影响,犯了定向思维的错误. 概念理解: typedef 只对已有的类型进行别名定义,不产生新的类型: #define 只是在预处理过程对代码进行简单的替换. 清晰了解两个概念后,发现它们就是…
void的含义 void即"无类型",void *则为"无类型指针",可以指向任何数据类型. void指针使用规范 ①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值.例如: int * pint; void *pvoid; pvoid = pint; /* 不过不能 pint= pvoid; */ 如果要将pvoid赋给其他类型指针,则需要强制类型转换如:pint= (int *)pvoid; ②在ANSIC标准中,不允许对void…
void的含义 void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型. void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值.例如:int * pint;void *pvoid;pvoid = pint; /* 不过不能 pint= pvoid; */如果要将pvoid赋给其他类型指针,则需要强制类型转换如:pint= (int *)pvoid; ②在ANSIC标准中,不允许对void指针进行算术运算如pvoid++或pvo…
转载:http://blog.csdn.net/geekcome/article/details/6249151 void的含义 void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型. void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值.例如:int *pint;void *pvoid;pvoid = pint; /* 不过不能 pint = pvoid; */如果要将pvoid赋给其他类型指针,则需要强制类型转换,如:p…
void关键字的使用规则: 1. 如果函数没有返回值,那么应声明为void类型: 2. 如果函数无参数,那么应声明其参数为void: 3. 如果函数的参数可以是任意类型指针,那么应声明其参数为void * : 4. void不能代表一个真实的变量: void体现了一种抽象,这个世界上的变量都是“有类型”的 #########################################################################1.概述 许多初学者对C/C++语言中的voi…
定义一个函数指针类型.比如你有三个函数:void hello(void) { printf("你好!"); }void bye(void) { printf("再见!"); }void ok(void) { printf("好的!"); } typdef void (*funcptr)(void);这样就构造了一个通用的函数你用的时候可以这样:void speak(int id){ funcptr words[3] = {&hello,…
转自:http://www.lanou3g.com/blog/sort/SelfiOS/page/78 1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧.   2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据. void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个voi…
首先看一段测试代码: #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…
void.void*以及NULL 写在前面 在使用C++的过程中,void和NULL用到的频率挺高的,但是从来没有去探索过这两个关键字的联系和区别,也没有对它们做更多的探索.对于void*,说实话,实际应用中貌似没有用到过这个东西.那这三者到底是什么呢?应该怎么用呢? void void是指无类型.我们可以把它理解为“不存在” 我们在写代码的时候,用到void的地方无非两个: 1.函数没有返回值的时候,将函数的返回类型声明为void 如:void f(int a); 在C语言中,如果一个函数没有…
C/C++语言void及void指针深层探索 1.概述许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧. 2.void的含义void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据.void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义:void a;这行语句编译时会出错,提示“…
http://blog.csdn.net/geekcome/article/details/6249151 ----------- void的含义 void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型.void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值.例如: int * pint; void *pvoid; pvoid = pint; /* 不过不能 pint= pvoid; */ 如果要将pvoid赋给其他类型指针,则…
2440test程序中的Main.c中在结构体中有这么一句: void (*fun)(void); 后查阅资料得知这句代码的意思是: 定义一个函数指针. 比如:定义一个指向函数的指针,该函数有一个整形参数并返回一个整型值 int(*fun)(int): 再比如原来函数是void func(void): 那么定义的函数指针类型就是: typedef void(*Fun)(void): 然后用此类型生成一个指向函数的指针. 原文摘录: struct { void (*fun)(void);//定义函…
指针有两个属性:指向变量/对象的地址和长度 但是指针只存储地址,长度则取决于指针的类型 编译器根据指针的类型从指针指向的地址向后寻址 指针类型不同则寻址范围也不同,比如: int*从指定地址向后寻找4字节作为变量的存储单元 double*从指定地址向后寻找8字节作为变量的存储单元 1.void指针是一种特别的指针    void *vp    //说它特别是因为它没有类型    //或者说这个类型不能判断出指向对象的长度 2.任何指针都可以赋值给void指针    type *p;    vp=…
2440test程序中的Main.c中在结构体中有这么一句: void (*fun)(void); 后查阅资料得知这句代码的意思是: 定义一个函数指针. 比如:定义一个指向函数的指针,该函数有一个整形参数并返回一个整型值 int(*fun)(int): 再比如原来函数是void func(void): 那么定义的函数指针类型就是: typedef void(*Fun)(void): 然后用此类型生成一个指向函数的指针. 原文摘录: struct { void (*fun)(void);//定义函…
原文转载地址:http://blog.csdn.net/sunchaoenter/article/details/6587426 增加自己的想法,作为笔记. 1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧. 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据. void几乎只有“注释…
void关键字的使用规则: 1. 如果函数没有返回值,那么应声明为void类型: 2. 如果函数无参数,那么应声明其参数为void: 3. 如果函数的参数可以是任意类型指针,那么应声明其参数为void * : 4. void不能代表一个真实的变量: void体现了一种抽象,这个世界上的变量都是“有类型”的 #########################################################################1.概述 许多初学者对C/C++语言中的voi…
static关键字1.修饰局部变量,延长局部变量的生命周期.使变量成为静态局部变量,在编译时就为变量分配内存,直到程序退出才释放存储单元.2.修饰全局变量,限制全局变量的使用范围为本文件中.全局变量默认为静态全局变量,在编译时就为变量分配内存,直到程序退出才释放存储单元.3.修饰函数,限制函数的使用范围为本文件中.使函数成为静态函数,对函数的连接方式产生影响.如果想让内部函数被外界引用,可在函数前添加extern修饰. void与void *(void指针)1.void 即‘无类型’,void…
typedef void(*Fun)(void); 函数类似于数组,函数名就是它的首地址: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 int i;             // 定义了一个int类型的变量i: 而这样 typedef INT int;   // 表示用户自己定义了一个整型数据类型INT,实际上就等同于int 所以:INT ii:              …
void signaldemo_test(void) { struct itimerval tv, otv; signal(SIGALRM, sigFunc); //how long to run the first time tv.it_value.tv_sec = ; tv.it_value.tv_usec = ; //after the first time, how long to run next time tv.it_interval.tv_sec = ; tv.it_interva…
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只是在预处理过程对代码进行简单的替换. 清晰了解两个概念后,发现它们…
typedef void(*Func)(void)的用途 用法的好处: 定义一个函数指针类型. 例子: 有三个类型相似或功能相似的函数: void TASK1(void) { printf("I’m TASK1"); }//函数定义 void TASK2(void) { printf("I’m TASK2"); }//函数定义 void TASK3(void) { printf("I’m TASK3"); }//函数定义 ... ... typd…
1.typdef 用法如下所示 typedef unsigned char uint8_t; typedef unsigned short int uint16_t; typedef unsigned int uint32_t; uint8_t i; //定义一个8位无符号字符型变量 2.指针函数形式 //定义一个函数指针pfun,指向一个返回类型为int,有一个参数为int的函数 int (*pfun)(int) ; //指针层面理解,函数的函数 名是一个指针 //指针指向函数在内存中的首地址…