c言語のポインタ

ポインタよくあるミス編

構造体へのポインタに値を入れるときは、 mallocするか、 既に宣言した変数のアドレスをいれないといけない。

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

struct data {
   int x;
   int y;
   char *z;
};

int main(void){

    int i,j,k;
    //struct data d;
    struct data *pd;

    //   pd = &d;
    pd->x = 1;
    pd->y = 2;

    pd->z = (unsigned char*)malloc(sizeof(unsigned char) * 100); // このmallocがないと代入ができない。

    
    for(i = 0; i<100 ; i++ ){
      pd->z[i] = i+100;
    }

    
    printf("d.x = %d\n", pd->x);
    printf("d.y = %d\n", pd->y);

    for(i = 0; i<20 ; i++){
       printf("d.z = %d\n", pd->z[i]);
    }
    //printf("*(d.z) = %d\n", *(pd->z));

    return 0;
}