簡體   English   中英

無法將char數組分配給struct數組的第三個插槽

[英]Cannot assign a char array to my struct array's third slot

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

#define NAMELENGTH 20
#define MAXPEOPLE 10

struct people{
    char name[NAMELENGTH];

    int ratings[MAXPEOPLE];
};

int main(void)
{
    struct people *men[MAXPEOPLE];
    strcpy(men[2]->name,"pie");

    return 0;
}

在嘗試為男性分配任何值時崩潰[2] - >名稱男性[] - >名稱是一個字符數組,前兩個插槽men [0] - > name和men [1] - > name工作正常。

men[2]不是指針所以當你使用->運算符時,你試圖取消引用不是指針的東西。 您必須使用malloc ,然后您可以使用指向已分配空間的指針

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

#define NAMELENGTH 20
#define MAXPEOPLE 10

struct people{
    char name[NAMELENGTH];

    int ratings[MAXPEOPLE];
};

int main(void)
{
    struct people *men[MAXPEOPLE];
    men[2] = malloc(sizeof(struct people));
    strcpy(men[2]->name,"pie");

    return 0;
}

關於它(對你來說)前2個'槽'的工作原理,它確實不應該因為那些指針也未定義。 對我來說,它僅適用於索引0。

您只創建了一個指針數組,而不是一個struct people

struct people *men[MAXPEOPLE];

這只會創建一個指針數組,但指針尚未指向任何指針,因為您沒有為它們分配任何空間。 這意味着您要復制到實際不存在的name 要創建所需的struct people

struct people men[MAXPEOPLE];
strcpy(men[2].name,"pie");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM