我应该如何在下面的代码中使用 C 中的结构指针数组?

格格利·贝尔塔兰

我有一个更复杂的项目,我(尽我所能)将我的问题简化为您可以在此处看到的代码。

我怀疑问题出在文件 Bc 中的函数 create_B() 和/或当我从文件 Ac 调用此函数时。或者也许我的 x 和 y 也应该是指针?如您所知,我只是在学习 C 编程,任何帮助/解释将不胜感激。

乙:

#ifndef B_H
#define B_H

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

typedef struct B B;
typedef B *B_ptr;

struct B
{
    int x;
    int y;
};

B_ptr create_B(int x, int y);

#endif

公元前:

#include "B.h"

B_ptr create_B(int x, int y) {
    B_ptr b = (B_ptr)malloc(sizeof(B));
    b->x;
    b->y;
    return b;
}

啊:

#ifndef A_H
#define A_H

#include "B.h"

typedef struct A A;
typedef A *A_ptr;

struct A
{
    B_ptr *list_of_10_pointers;
};

A_ptr create_A();

#endif

交流:

#include "A.h"

A_ptr create_A()
{
    A_ptr a = (A_ptr)malloc(sizeof(A));
    if (!a)
        return NULL;

    B_ptr *list = (B_ptr *)malloc(10 * sizeof(B_ptr));
    if (!list)
        return NULL;
    a->list_of_10_pointers = list;

    for (size_t i = 0; i < 10; i++)
    {
        // list[i] = (B_ptr)malloc(sizeof(B));
        list[i] = create_B(i+1, i+2);
    }

    return a;
}

主要.c:

#include <stdio.h>

#include "A.h"

int main(int argc, char **argv)
{
    A_ptr a = create_A();

    for (size_t i = 0; i < 10; i++)
    {
        printf("x=%d\n", a->list_of_10_pointers[i]->x);
        printf("y=%d\n", a->list_of_10_pointers[i]->y);
    }
    return 0;
}

编译: gcc Main.c Ac Bc -o out

输出:

x=0
y=0
x=0
y=0
.
.
.
x=0
y=0
欧文

编译给出这些警告:

$ gcc Main.c A.c B.c -o out
B.c:5:8: warning: expression result unused [-Wunused-value]
    b->x;
    ~  ^
B.c:6:8: warning: expression result unused [-Wunused-value]
    b->y;
    ~  ^
2 warnings generated.

这几乎直接导致更改B.c为:

#include "B.h"

B_ptr create_B(int x, int y) {
    B_ptr b = (B_ptr)malloc(sizeof(B));
    b->x = x;
    b->y = y;
    return b;
}

然后输出变为:

$ ./out
x=1
y=2
x=2
y=3
x=3
y=4
x=4
y=5
x=5
y=6
x=6
y=7
x=7
y=8
x=8
y=9
x=9
y=10
x=10
y=11

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在C中构造结构指针数组?

如何在C中返回指向结构数组的指针

如何使用指向数组的指针访问结构数组中包含的结构中的字段?[C ++]

如何从C中的函数返回指针结构数组

使用C中的双指针在结构数组中分配内存

使用指针c ++交换结构数组中的元素

使用C中的结构指针进行数组分配

如何在下面的代码中使用systemNavigator.pop在Flutter中退出应用

C ++中结构的指针数组

如何在C中的结构的指针成员中存储2d数组的内存地址

C:如何向指针数组添加结构

在C中读取文件时如何使用指针填充结构数组

C如何将指针传递给结构数组指针

C:如何将指向结构的指针存储在另一个结构中的动态数组中?

Redis:我可以在Redis中存储包含指向数组的指针的ac/c++结构类型吗?

指向c中匿名结构数组的指针

无论如何,在C ++中使用下面的数组

如何在下面的代码中为我的 ajax 调用添加 10 秒的延迟

如何在下面的代码中更改文本的颜色?

如何在下面的代码中实现改组函数?

如何在下面的代码中单击特定的href

如何在下面的代码中打印正确的名称?

我如何将结构指针数组中的结构直接复制到 c 中的另一个结构

如何在下面的代码中添加滚动条?(使用Tkinter for 2.7.5)

如何在结构中初始化 int 指针并将其分配给 C 中的数组?

在下面的代码中需要如何使用applyMap的帮助

C:结构指针数组

C中带有指针和结构数组的结构

如何使用C从数据库分配字符串并将其读取到结构中的指针变量数组中