C语言:void指针

使用前必须进行强制类型转换

#include <stdio.h>
void test(const void *p);
int main(){
        int i = 123;
        int *p = &i;
        puts("my test:");
        test(p);
}
void test(const void *p){
        const int *a = (const int *)p;
        printf("%d\n", *a);
}
时间: 2024-08-05 11:09:21

C语言:void指针的相关文章

C语言学习之空指针NULL以及void指针详解

本文和大家分享的主要是c 语言 空指针NULL 以及 void 指针相关内容,一起来看看吧,希望对大家 学习c语言有所帮助. 空指针 NULL 一个指针变量可以指向计算机中的任何一块内存,不管该内存有没有被分配,也不管该内存有没有使用权限,只要把地址给它,它就可以指向,C 语言没有一种机制来保证指向的内存的正确性,程序员必须自己提高警惕. 很多初学者会在无意间对没有初始化的指针进行操作,这是非常危险的,请看下面的例子: 1. #include 2. int main () { 3. char *

程序猿之---C语言细节27(函数无参数时细节、函数默认返回int型证明、return默认还回值、void指针++操作)

主要内容:函数无参数时细节.函数默认返回int型证明.return默认还回值.void指针++操作 一.函数无参数时细节 函数无参数时应该加上void 在c语言中一个函数 void f(); 在使用时传递参数f(2);没有报错,而在c++中则会报错 最好加上void来明确函数是无参数的 二.函数默认返回类型为int型 见下面程序 三.return默认返回1 细节:return不可返回执行栈内存中的指针,因为该内存在函数体结束时自动销毁 四.void 指针++操作 void *p; p++; //

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

转自:http://www.lanou3g.com/blog/sort/SelfiOS/page/78 1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧. 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据. void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变

C语言空指针NULL以及void指针

空指针NULL 在C语言中,如果一个指针不指向任何数据,我们就称之为空指针,用NULL表示.例如: int *p = NULL; 注意区分大小写,null 没有任何特殊含义,只是一个普通的标识符. NULL 是一个宏定义,在stdio.h被定义为: #define NULL ((void *)0) (void *)0表示把数值 0 强制转换为void *类型,最外层的( )把宏定义的内容括起来,我们自己进行宏定义时也推荐这么做,防止发生歧义. 总之,p 的值为 0.你可以输出 p 的值: #in

【转载】C/C++语言void及void指针深层探索

C/C++语言void及void指针深层探索 1.概述许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧. 2.void的含义void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据.void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义:void a;这行语句编译时会出错,提示“

C语言使用 void 指针实现Stack

数据结构基础课的教材使用C来实现数据结构,上学期看别的书用C++实现时还没什么感觉,一对比就发现C++的类和模板用起来比C方便多了. 在写四则运算计算器的时候,int写一遍,char还得写一遍感觉十分痛苦,百度了一下有没有别的解决办法,发现了下面这篇文章. 如何利用堆栈及逆波兰表达式进行数学四则运算:http://www.xuebuyuan.com/1602553.html 关键是在于理解 void 指针与一般指针的不同之处是它只保存数据的首地址,而不知道也不关心数据究竟有多少个字节. 因此利用

C#委托与C语言函数指针及函数指针数组

C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用的时候通过指针访问这个函数. 在C语言中函数指针的申明如下: //可以理解为申明一个指着变量 Func ,它的类型是 返回Type(可以为 void )类型的参数,接收 (Type one,Type two,...)类型的//参数(可以不接受参数). Type *Func(Type one,Type

void* 指针有什么用

void*其实可以理解为一个context,利用它可以很好的实现C语言面向对象编程.我觉得使用void*,不是为了看起来合适,而是一个约定,使用C/C++编程的人员看到void*,习惯性的就会认为--这是个私有数据,只有定义的一方才有权解释:这也是我们在回调函数中传递void*作为userdata的基础共识. void*指针其实可以用作泛型,你想象一下你在C中要交换两个变量,如果是两个整数的话,就像: void swap_int(int* lhs, int* rhs) { int tmp = *

void及void指针类型

1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并 详述void及void指针类型的使用方法与技巧. 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据. void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义: void a; 这行语句编译时会出错,提示“illegal use of ty

void类型及void指针

1.概述 许多初学者对C/C 语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并 详述void及void指针类型的使用方法与技巧. 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据. void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义: void a; 这行语句编译时会出错,提示“illegal use of typ