【问题标题】:How can I correctly assign an Array to a struct and how can I access an array that I assigned to a struct in C? [closed]如何正确地将数组分配给结构以及如何访问分配给 C 中结构的数组? [关闭]
【发布时间】:2019-12-07 21:16:43
【问题描述】:

还是 C 的新手,目前正在尝试掌握它。

我的问题如下:

(1) 以后如何在代码中访问分配给结构的数组?

(2) 如何解决指针类型不兼容的赋值错误?或者我该如何分配 数组正确吗?

#include <stdio.h>

typedef struct Some_Array{
  int length;
  int *array:
} Some_Array;


Some_Array structure_arr(int *array, int length_a){
  Some_Array new_arr;
  new_arr.length = length_a;
  new_arr.array = &array; // Compiler gives warning: assignment from incompatible pointer type

  return new_arr;
}


int main(){

  int my_array = { 1, 2, 4, 6, 8};
  int my_array_length = 5;

  Some_Array fancy_arr = structure_arr(my_array, my_array_length);

  printf("\nLength is: %d", fancy_arr.length); // works
  printf("\n First index of fancy_arr:%d", fancy_arr.array[0]); // Doesnt work

  return 0;
}

【问题讨论】:

  • 感谢使用和提及警告!这样做的人太少了:(

标签: c arrays pointers struct typedef


【解决方案1】:

由于array 已经是指向int 的指针,所以不要使用地址运算符:

new_arr.array = &amp;array; 应该是new_arr.array = array;

否则你分配本地参数的地址而不是传递数组的地址。

同时修正错字:

int *array: 应该是int *array;

int my_array = { 1, 2, 4, 6, 8}; 应该是int my_array[] = { 1, 2, 4, 6, 8};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-01
    • 2018-04-08
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 2020-04-02
    相关资源
    最近更新 更多