gpt4 book ai didi

c++ - C++中的指针作为参数

转载 作者:搜寻专家 更新时间:2023-10-31 01:09:21 25 4
gpt4 key购买 nike

我是 C++ 的新手,之前主要使用 Java,但我在尝试编写函数时遇到了问题。我确信这很简单,但尽管如此,它还是让我感到不适,所以请准备好迎接一个痛苦的新手问题。

我正在尝试编写如下函数:

void foo(u_char *ct){

/* ct is a counter variable,
it must be written this way due to the library
I need to use keeping it as an arbitrary user argument*/

/*here I would just like to convert the u_char to an int,
print and increment it for each call to foo,
the code sample I'm working from attempts to do it more or less as follows:*/

int *counter = (int *) ct;
printf("Count: %d\n", *counter);
*counter++;

return;

}

当我尝试在 XCode 中运行它时(我也是新手),我在 foo 的 printf() 部分收到 EXE_BAD_ACCESS 异常。我真的不确定这里发生了什么,但我怀疑它与合并值、指针和引用有关,我还没有很清楚 C++ 如何理解它们来自 Java。有人看到我在这里滑倒了吗?

谢谢。

最佳答案

一个 u_char 在内存中是 1 个字节(顾名思义它只是一个无符号字符),一个 int 通常是 4 个字节。在 printf 中,您告诉运行时从 counter 所在的地址读取一个 int(4 个字节)。但是你在那里只拥有 1 个字节。

关于c++ - C++中的指针作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17098717/

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