gpt4 book ai didi

c - 当我在代码中使用指向结构指针的指针时出现返回值 3221225477

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

我下面的代码有什么问题?

当我用 Dev C++ 编译器编译它时,没有任何错误或警告。但是在我运行我的程序后出现执行错误和以下返回值文本:

Process exited after 5.1 seconds with return value 3221225477
Press any key to continue . . .

知道哪里出了问题吗?

当我使用调试功能时,该行出现错误:

printf("Value of (*pointerToMyOwnStructPointer)->a = %d\n", (*pointerToMyOwnStructPointer)->a);

我的代码是:

#include <stdio.h>
#include <stdlib.h>

typedef struct{
int a;
int b;
}myIntegers_t;

int main (void)
{
myIntegers_t *myOwnStructPointer = NULL;
myIntegers_t **pointerToMyOwnStructPointer = NULL;

myOwnStructPointer = (myIntegers_t*)malloc(sizeof(myIntegers_t));

if (myOwnStructPointer > 0)
{
myOwnStructPointer->a = 2;
myOwnStructPointer->b = 8;

printf("Value of myOwnStructPointer->a = %d\n", myOwnStructPointer->a);
printf("Value of myOwnStructPointer->b = %d\n", myOwnStructPointer->b);

pointerToMyOwnStructPointer = (myIntegers_t**)myOwnStructPointer;

printf("\n");
printf("Value of (*pointerToMyOwnStructPointer)->a = %d\n", (*pointerToMyOwnStructPointer)->a);
printf("Value of (*pointerToMyOwnStructPointer)->b = %d\n", (*pointerToMyOwnStructPointer)->b);
}
else
{
return -1;
}

return 0;
}

最佳答案

在你的代码中,

 pointerToMyOwnStructPointer = (myIntegers_t**)myOwnStructPointer;

是非常错误的。您需要将其更改为

pointerToMyOwnStructPointer = &myOwnStructPointer;

获得预期的行为。

详细说明,

  • myOwnStructPointer 是一个指向类型的指针。
  • pointerToMyOwnStructPointer 是一个指针到指针类型。

它们不等价只是因为它们都是指针,所以您不能简单地将一种类型的值转换到另一种类型并期望它起作用。 Actor 阵容是错误的(甚至不需要)。所以,

  • 不投
  • 启用编译器警告。

大多数时候,您的编译器至少会通过警告来拯救您。


注:请see why not to cast cmalloc() 和 family 的返回值。

关于c - 当我在代码中使用指向结构指针的指针时出现返回值 3221225477,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31428708/

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