c语言指针之void
来源:互联网 发布:上海地铁客流量数据 编辑:程序博客网 时间:2024/05/29 04:22
void有两种使用使用场景:
- 如果函数没有返回值或者参数,那么应该声明为void。
- 声明一个void的指针类型,对于void的指针类型,它只保存了一个地址,不包含指向变量的指针类型,因此,任何类型的指针变量都可以赋值给它,而不需要类型转换
//
// main.c
// pointer1
//
// Created by eric wang on 15/12/10.
// Copyright © 2015年 eric. All rights reserved.
//
#include <stdio.h>
int main(int argc,constchar * argv[]) {
// insert code here...
int a=10;
void *vp;
int *ip;
int *ip1;
ip=&a;
vp=ip;
printf("%d\n",*ip);
printf("%p %p\n",ip,vp);
/**
* void 指针类型转 int指针类型时候,必须强制转换,不然就会报错,类型冲突
ip1=*vp;(错误)
*/
ip1=(int *)vp;
printf("%d %d\n",*ip,*ip1);
printf("%p %p %p\n",ip,vp,ip1);
a=34;
printf("%d %d\n",*ip,*ip1);
printf("%p %p %p\n",ip,vp,ip1);
return0;
}
10
0x7fff5fbff78c 0x7fff5fbff78c
10 10
0x7fff5fbff78c 0x7fff5fbff78c 0x7fff5fbff78c
34 34
0x7fff5fbff78c 0x7fff5fbff78c 0x7fff5fbff78c
Program ended with exit code: 0
//使用void指针潜在的危险,类型转换的错误。
//
// main.c
// pointer1
//
// Created by eric wang on 15/12/10.
// Copyright © 2015年 eric. All rights reserved.
//
#include <stdio.h>
int main(int argc,const char * argv[]) {
void foo(void *p);
void foo1(void *p);
int b=23;
foo(&b);
foo1(&b);
return0;
}
void foo(void *p)
{
float *pf=p;
printf("%p %f\n",pf,*pf);
}
void foo1(void *p){
int *p1=p;
printf("%p %d\n",p1,*p1);
}
0x7fff5fbff78c 0.000000
0x7fff5fbff78c 23
Program ended with exit code: 0
- c语言指针之void
- C语言之void 指针问题
- C语言之void类型及void指针
- C/C++语言void及void指针
- void及void指针(C/C++语言)
- C语言void及void指针
- C语言--void指针参数
- C/C 语言void及void指针深层探索
- Void类型的指针-C语言
- C语言的void*指针使用
- C语言void泛型指针
- C语言中的void * 指针类型
- C/C++语言void及void指针深层探索(转载)
- C/C++语言void及void指针深层探索
- C/C++语言void及void指针深层探索
- [转]C/C++语言void及void指针深层探索
- C/C++语言void及void指针深层探索
- C/C++语言void及void指针深层探索
- PAT 1045 快速排序
- qtree(树链刨分)
- CSS的继承、层叠和特殊性
- Python 基础语法(二)
- HDU 2119 Matrix 二分图最小点覆盖
- c语言指针之void
- Python 基础语法(三)
- C++顺序性容器、关联性容器与容器适配器
- poj--1386
- HDOJ 1716 排列2 (next_permutation或dfs)
- 2015.12.10 实验室一周年庆|剁手入ipad迷你|开始一个月的吃风喝土忐忐忑忑
- Python 基础语法(四)
- C++学习总结
- 触摸 , 响应者链 , 摇一摇