C言語関係掲示板

過去ログ

No.362.構造体配列の領域を動的に取得するプログラム

[戻る] [ホームページ]
No.2390

構造体配列の宣言方法
投稿者---yuki.k(2002/08/14 21:46:20)


構造体配列の領域を動的に取得するプログラムを書いています。
以下のソースのように記述すると構造体のvalueのアドレスが0x0になっています。
どこが誤っているのか、ご指摘いただきたいと思います。
よろしくお願いします。

typedef struct{
    char    *name;
    char    *value;
}FormData;

static FormData         *SearchData;

void main()
{
    int ParamNum = 2;
    SearchData = ( FormData *)malloc( ParamNum * sizeof( FormData ) ); 
}



No.2395

Re:構造体配列の宣言方法
投稿者---TDa(2002/08/14 23:27:44)


次のコードで疑問が解消すると思うのですがどうでしょう。

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

typedef struct{
    char    *name;
    char    *value;
}FormData;

static FormData         *SearchData;

int main(void)
{
    int ParamNum = 2;
  
    SearchData = ( FormData *)malloc( ParamNum * sizeof( FormData ) ); 
   
    printf("=======print value====\n");
    printf("name0[%p], name1[%p]\n", SearchData[0].name, SearchData[1].name);
    printf("value0[%p], value1[%p]\n", SearchData[0].value, SearchData[1].value);
    printf("\n======Print pointer value========\n");
    printf("Date0[%p], name0[%p], value0[%p]\n", &(SearchData[0]), &(SearchData[0].name), &(SearchData[0].value));
    printf("Data1[%p], name1[%p], value1[%p]\n", &(SearchData[1]), &(SearchData[1].name), &(SearchData[1].value));
  
    free(SearchData);

    return 0;
}