c语言指针指错了,C中的指针问题 - 我在这里做错了什么?

对于一些背景知识,我正在用C编写一个抄表应用程序,用于运行专有版本DOS的小型16位掌上电脑.

我有一个显示仪表信息的屏幕,并提示用户输入读数.当用户按下设备上的回车键时,将执行以下代码:

/* ...

* beginning of switch block to check for keystrokes

* ...

*/

case KEY_ENTER: {

/* show what has been entered */

if(needNew == 0) {

/* calculate usage for new reading */

double usg = 0;

int ret = CalculateNewUsage(vlr, buf, &usg);

VerifyReadScreen(vlr, ret, buf, &usg);

needRedraw = TRUE;

}

break;

}

/* .... end switch statement */

vlr是一个指针,它指向包含所有帐户/米信息,一个结构buf是类型的char[21]用于存储数值击键针对其该块上面处理的读数.当我在调用之前和之后检查它们时,我的变量都包含有效数据CalculateNewUsage.

但是,当我在输入后再次检查可变数据时VerifyReadScreen,newread会在内存中随机指向并返回看起来像版权声明的内容.有趣的是无论什么账户或阅读什么我进入-对同一无效数据newread中VerifyReadScreen印在屏幕上.我以VerifyReadScreen同样的方式传递地址CalculateNewUsage,但不知怎的,我最终得到了不同的东西.

这是VerifyReadScreen:

BYTE VerifyReadScreen(const VLRREC * vlr,

const int status,

const char * newread,

const double * usage) {

/* snip a whole bunch of irrelevant formatting code */

printf("%s", (*newread)); /* prints funky copyright text */

/* snip more irrelevant formatting code */

return TRUE;

}

谢谢Jefromi的指出我在哪里实际打印的代码newread中VerifyReadScreen应认真阅读:

printf("%s", newread); /* yay! */

因为我不需要解除引用,newread因为printf这对我来说.我本质上是将一个指针传递给一个指针,该指针在内存中是一个任意的位置.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值