gpt4 book ai didi

c - 指向变量的指针?

转载 作者:太空宇宙 更新时间:2023-11-04 06:09:59 25 4
gpt4 key购买 nike

是否可以有指向数据变量的指针?我知道我可以有指向字符串的指针,例如char *str[n] 并且我可以对这些指针执行“for”循环以检索字符串...str[i],其中 i 是索引计数器。

如果我有一些数据,例如

char var1;
int var2;
char var3;

我想从 stdin 获取数据我可能会使用 3 个单独的 scanf() 调用——这只是一个例子——来填充这些变量。

我可以有“指向数据的指针数组”吗? void *data[] where data[0] = char var1, data[1] = int var2 and data[2] = char var3, 这样我就可以在 'for' 循环中调用 scanf() 来填充这些变量? (我假设该类型必须为 void 才能满足数组中的不同类型)

最佳答案

我真的不推荐这个,但这是你描述的实现:

char var1;
int var2;
char var3;

void *vars[3];
char *types[3];

vars[0]=&var1; types[0]="%c";
vars[1]=&var2; types[1]="%d";
vars[2]=&var3; types[2]="%c";

for (int i=0;i<3;i++)
{
scanf(types[i],vars[i]);
}

您需要类型数组,以便 scanf 知道它应该期待什么。

但是,这个过程是非常不安全的。通过放弃任何类型安全,您会因格式错误的输入而导致崩溃。此外,如果您错误地配置了 types[],那么您几乎肯定会崩溃,或者看到意想不到的结果。

当你设置数组时,你真的保存了任何代码吗?

这里有很多答案可以让您使用类型安全的 C++ 解决方案,或者按照其他人的建议,显式调用 scanf()。

关于c - 指向变量的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1141271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com