首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

刚接触C,请问怎么在结构体数组中使用指针

2012-08-08 
刚接触C,请教如何在结构体数组中使用指针偶在结构体数组中使用了指针,使用“方式1”,直接赋初值,编译执行通

刚接触C,请教如何在结构体数组中使用指针
偶在结构体数组中使用了指针,
使用“方式1”,直接赋初值,编译执行通过;
使用“方式2”,动态赋值,编译通过,但结果不正确,假设 3 次赋值依次为 {"STR1",1},{"STR2",2},{"STR3",3},输出结果均为"STR3";

刚接触C,完全靠摸着石头过河,还望指教。

C/C++ code
struct LVItems{    TCHAR *szKey;    int num;};BOOL Method(void){    /*    // 方式1    // 直接赋初值,编译执行通过    struct LVItems lvitems[5]={    {"STR1",1},    {"STR2",2},    {"STR3",3}    };    // 方式1 结束    */        // 方式2    struct LVItems lvitems[5]={0};//好象应该在此处分配内存吧?    /* 定义指针数组 */    struct LVItems *k[5];    struct LVItems *p;    p = lvitems;    int i;    BOOL bResult = TRUE;    for(i=0;i<3;i++)    {        TCHAR *szKey=(TCHAR*)malloc(_MAX_PATH + 1);// 在是此处分配内存吗?        TCHAR szValueName[_MAX_PATH + 1];        //... 此处生成 szValueName        // 动态赋值,编译通过,但结果不正确        lvitems[i].szKey=szValueName;    // ok        lvitems[i].num=i;        //strcpy(p->szKey,szValueName);    // error,这里如何修正才能替代上两行代码        //p->num=i;         // 将指针放入指针数组         k[i] = p;        p++;    }    // 方式2 结束    // 输出结果    for(p=lvitems;p<lvitems+3;p++)        MessageBox(NULL,p->szKey,"Key",MB_OK);    return bResult;}




[解决办法]
C/C++ code
p->szKey=(TCHAR*)malloc(_MAX_PATH + 1);//lvitems[i].szKey=szValueName;    // ok//lvitems[i].num=i;strcpy(p->szKey,szValueName);    // error,这里如何修正才能替代上两行代码p->num=i; 

热点排行