c 地址变量

「已注销」 2019-05-20 10:49:40
可否定义一个地址变量,该地址指向的地方数据类型不定。
...全文
101 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2020-04-26
  • 打赏
  • 举报
回复
引用 2 楼 stherix 的回复:
void *啊
需要用什么数据类型就强转

Thanks.
六道佩恩 2019-05-22
  • 打赏
  • 举报
回复
地址就是指针,&a是指针常量,int *p,p的指针变量,你说的地址变量就是指针变量吧,指向的数据类型不定的话,你可以用void *p,这样p可指向任何地方,与其他类型地址运算可自动转换类型,你也可以手动转。 比如

#include <stdio.h>
int main()
{
	int a=5;
	double b=7;
	void *p=&a;
	printf("%d ",*(int*)p);		//将指针强制转换为int*型再访问 
	p=&b;
	printf("%f ",*(double*)p);
	return 0;
}
void*指针用得最多的地方是函数形参,这样不管传什么类型的指针都能接收。
CaptainXue 2019-05-21
  • 打赏
  • 举报
回复
如果是函数调用时,想用不同类型的参数实例化,可以用类模板
template <class T> //T为类型的别名

#include<iostream>
using namespace std;
template <class T>
T add(T& left, T& right)
{
return left + right;
}

int main()
{
int a = 3, b = 2;
double c = 5.0, d = 1.0;
printf("%d\n",add(a, b));
printf("%lf\n",add(c, d));
}

ch_jm0723 2019-05-21
  • 打赏
  • 举报
回复
使用malloc为一个数据类型创建一块内存再保存数据你就明白了
自信男孩 2019-05-21
  • 打赏
  • 举报
回复
不确定类型,那么怎么知道应该给分配多少内存呢?
zhouqunhai 2019-05-21
  • 打赏
  • 举报
回复
先用空类型,后续再转换类型
FoolCarpe 2019-05-21
  • 打赏
  • 举报
回复
引用 2 楼 stherix 的回复:
void *啊 需要用什么数据类型就强转
老马何以识途 2019-05-21
  • 打赏
  • 举报
回复
其實char *應該都可以,它只要指向一個字節的地址就夠了,只要保證有足夠的連續空間存放不同的數據類型。
stherix 2019-05-21
  • 打赏
  • 举报
回复
void *啊 需要用什么数据类型就强转
「已注销」 2019-05-20
  • 打赏
  • 举报
回复
引用 楼主 benny.xuthus的回复:
可否定义一个地址变量,该地址指向的地方数据类型不定。
int ? ... ...

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧