gpt4 book ai didi

c - C 中 *ptr 和 ptr* 有什么区别?

转载 作者:行者123 更新时间:2023-11-30 20:52:27 25 4
gpt4 key购买 nike

在下面的结构指针示例中

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

struct siva {
int a;
};

typedef struct siva *s1;

void main()
{
s1 b=(s1)malloc(sizeof(s1*));
b->a=8;
printf("\n The vlue is s1->a is %d",b->a);
free(b);
}

在上面的代码中,变量 b 没有声明,但这段代码是如何工作的

在这一行

   s1 b=(s1)malloc(sizeof(s1*));

如何为 b 分配内存以及为什么在 sizeof() 中使用 s1*。s1 和 s1 之间有什么区别

最佳答案

以下是 s1 类型的声明,作为指向 struct siva 的指针

typedef struct siva *s1;

以下是指向s1的指针(例如,指向struct siva的指针)

s1*

malloc中给出的大小错误,应该是

s1 b=(s1)malloc(sizeof(struct siva));

由于s1指向struct siva。它之所以有效,只是因为结构中第一个元素的地址是结构的地址,但这基本上是一件危险的事情。

b 被声明,在同一行中它被分配给:

    s1 b=(s1)malloc(sizeof(s1*));
// ^^^^

请注意,在 C 语言中,不允许从函数的返回值初始化变量。

关于c - C 中 *ptr 和 ptr* 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10511345/

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