gpt4 book ai didi

c - C语言中如何获取结构体中的指针成员?

转载 作者:行者123 更新时间:2023-11-30 14:48:12 25 4
gpt4 key购买 nike

首先,当我获取 char 指针的类型时,代码块开始工作。但是对于第二个代码块,当我尝试获取内部指针的类型时,它不起作用。请有人向我解释一下,为什么无法获取整数指针?谢谢..

// FIRST CODE BLOCK

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

int main()
{
struct machine
{
char *memory;
};

struct machine CPUtype;

struct machine *mpu641;

CPUtype.memory="QWERTY";
mpu641=&CPUtype;

printf("The value i %s\n",mpu641->memory);

return 0;
}

// SECOND CODE BLOCK

int main()
{
struct machine
{
int *memory;
};

struct machine CPUtype;

struct machine *mpu641;

CPUtype.memory=5;
mpu641=&CPUtype;

printf("The value i %d\n",mpu641->memory);

return 0;
}

最佳答案

您尝试将整数分配给指针变量。那是行不通的。

第一个代码:

CPUtype.memory="QWERTY";

这很好,因为 "QWERTY" 是一个字符串文字,并且第一个字符的地址被分配给您的 char* 成员。

第二段代码:

CPUtype.memory=5;

这里您尝试将一个整数分配给一个指针变量。因此,您将从编译器收到一些消息。尝试分配一个地址,它应该可以正常工作。

您应该如何执行此操作取决于您的程序的其余部分。您有多种选择:

// assign address of some variable
int intvar;
mpu641->memory = &intvar;

// dynamic memory allocations
CPUtype.memory = malloc(sizeof(int));

// fixed address of some registers etc.
// Requires cast and is not portable
CPUtype.memory = (int *) 0x100000

打印也是错误的:

printf("The value i %d\n",mpu641->memory);

您尝试打印一个整数,但传递一个指向整数的指针。要获取指向的值,您需要使用:

printf("The value i %d\n", *(mpu641->memory));

关于c - C语言中如何获取结构体中的指针成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50578475/

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