1

提案に従ってコードを変更しましたが、構造内の単一の要素を初期化するにはどうすればよいですか??

#include<stdio.h>

typedef struct student
{
    int roll_id[10];
    int name_id[10];
} student;

int main()
{
    student p = { {0} };  // if i want to initialize single element ''FIX HERE, PLs'' 
    student *pptr=&p;
    pptr->roll_id[9]={0}; // here is the error pointed 

    printf (" %d\n", pptr->roll_id[7]);

    return 0;
}
4

3 に答える 3

4

{0}struct集計 (配列または) 初期化子としてのみ有効です。

int roll_id[10] = {0}; /* OK */
roll_id[0] = 5; /* OK */

int roll_id[10] = 5; /* error */
roll_id[0] = {0}; /* error */

あなたが望んでいるように見えるのはp、 type の初期化ですstruct student。これは、ネストされた初期化子で行われます。

student p = { {0} }; /* initialize the array inside the struct */
于 2013-01-07T09:49:09.160 に答える
0

単一の配列要素の初期化には、以下のように使用します。

 pptr->roll_id[x] = 8 ; // here x is the which element you want to initialize.

配列全体の初期化には、以下のように使用します。

student p[] = {{10, 20, 30}};//just example for size 3.
student *pptr = p;
for (i = 0 ; i < 3; i++)
    printf ("%d\n", pptr->roll_id[i]);
于 2013-01-07T12:16:45.320 に答える
0

コードに 2 つのエラーが表示されます

    #include<stdio.h>

    typedef struct student
    {
    int roll_id[10];

    } student;

    int main()
    {

    student p;
    student *pptr=&p;
    pptr->roll_id[10]={0}; // in this line it should be pptr->roll_id[9]=0;


    printf (" %d\n", pptr->roll_id[7]);


    return 0;
    }

配列の長さは 10 であるため、インデックスは 9 である必要があり、配列の初期化時にのみ {0} を使用できます。

于 2013-01-07T09:53:38.010 に答える