尝试寻址内存指针时出现代码中的未知错误

问题描述 投票:0回答:1

我想澄清一件事。以下是我应该做的:

void key_print1(Key key);

打印一个密钥,key –> key1 然后 key–> key2

根据我的理解,我正在创建一个名为 key 的指针变量,它指向 key1 的内存地址,然后它指向 key2 的内存地址。我不明白为什么我的代码有错误?我对说明的理解有误吗?

void key_print1(Key key) {
    Key key1;
    Key key2;
    Key* key = &key1;
//    Key* key = &key2;
    printf("%p", key);
typedef float* Data;
typedef char* Key1;
typedef int Key2;
typedef struct {
    Key1 key1;
    Key1 key2;
} Key_struct;
typedef Key_struct* Key;
void key_print1(Key key);
c pointers
1个回答
0
投票

我不确定我是否完全理解你想要做什么,但我看到了一些大错误。

首先,您使用不同的类型重新定义密钥,这是一个错误。事实上,参数中给出的变量 key 是

Key
类型,但是
Key* key = &key1;
将其重新定义为
*Key
,这是一种不同的类型。实际上,你甚至不能重新定义相同类型的变量:
int a = 1
;然后 int
a = 2
是错误的,但是
int a = 1;
然后
a = 2
是正确的。

那么,

key1
key2
是什么?您使用了未定义的变量,这是一个错误。

此外,你应该真正弄清楚

key1
key2
是什么,因为现在很难理解你想要做什么。

© www.soinside.com 2019 - 2024. All rights reserved.