gpt4 book ai didi

c - 无法解密函数参数 : pointer and pointer to pointer

转载 作者:太空宇宙 更新时间:2023-11-04 08:50:22 27 4
gpt4 key购买 nike

我正在尝试使用一个函数来替代 C 中的 scanf()。该函数是由第三方编写的,并进行了相应的定义:

ScanDecimal16uNumber - Scans a decimal 16bit unsigned number ANSIC prototype: byte ScanDecimal16uNumber(const unsigned char **str, word *val)

str:byte - String to scan, starting with 0x. It returns as well until where it has scanned

val: Pointer to word - Pointer to value

Return value:byte - Error code"

我遇到的问题是两个输入。在与比我更精通 C 语言的人讨论后,我认为我掌握了第二个输入。 *val 是我要获取的值(16 位十进制数),val 是它的地址。我对 word 如何转换为 int 有点不清楚,这正是我所需要的,但我对此感觉很舒服。

第一个输入确实给我带来了麻烦,无论是语法还是它的作用。首先,**是什么?它是一个地址到一个地址?什么?如果不先自己建立地址,怎么能有一个地址到一个地址呢?类似的声明会是什么样子?

真的很感激一些关于功能和语法的建议。我正在重新认识 C,这感觉有点像深渊。

提前致谢,尤西夫·努里扎德

更新 1.0:我已根据您的建议修改了代码,目前没有错误,只有三个警告(最好!)我发布了以下代码:

  const unsigned char *addressPrime                 = "0x1f307100"; 
const unsigned char *addressOfAddressPrime = addressPrime;
word dutyCycle;


PWM1_Enable();
UTIL1_ScanDecimal16uNumber(&addressPrime, &dutyCycle);
PWM1_SetRatio16(dutyCycle);

此代码正在 Freescale FRDM KE02Z 板上使用,您看到的新功能用于使用我从实用程序扫描中获得的值来控制 PWM 占空比。我收到的警告是:

  1. 在 addressPrime 的声明中“初始化中的指针目标的符号不同。

2/3。未使用的变量 DeviceDataPrv/rtval 是 PWM 函数的一部分,我现在不太担心。

此时我的问题是:

  1. 他们指的是什么签名?
  2. 我应该更加注意我选择的数字还是 0x1f307100 有效?
  3. 因为这是为了动态更新 PWM 占空比,我应该为扫描功能使用 while 循环吗?

最佳答案

下面是如何调用该函数并在两个参数中使用它返回的结果。

int main(void) {
const unsigned char *input = "0x1f30 0x7100";
const unsigned char *p = input;
word val1, val2; /* A word should be the same as a uint16_t. */

byte r = ScanDecimal16uNumber(&p, &val1);

/* p should now point at the space between the two numbers in the
*input string. This will allow you to scan the next number immediately. */
byte q = ScanDecimal16uNumber(&p, &val2);

printf("%d %d\n", val1, val2);
return 0;
}

关于c - 无法解密函数参数 : pointer and pointer to pointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19886669/

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