刚接触C,请教如何在结构体数组中使用指针
偶在结构体数组中使用了指针,
使用“方式1”,直接赋初值,编译执行通过;
使用“方式2”,动态赋值,编译通过,但结果不正确,假设 3 次赋值依次为 {"STR1",1},{"STR2",2},{"STR3",3},输出结果均为"STR3";
刚接触C,完全靠摸着石头过河,还望指教。
使用“方式1”,直接赋初值,编译执行通过;
使用“方式2”,动态赋值,编译通过,但结果不正确,假设 3 次赋值依次为 {"STR1",1},{"STR2",2},{"STR3",3},输出结果均为"STR3";
刚接触C,完全靠摸着石头过河,还望指教。
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语言的练习题,题目答案都有,需要的可以下载看一下
C语言:结构体与结构体指针
将结构体变量作为函数参数,是将实参值传递给形参,属于值传递。将结构体所有参数传递给形参使用,但本身的值不会改变。将指向结构体变量的指针作为实参进行传递时,是将结构体变量的地址传递给形参,属于地址传递,会改变实际结构体变量的成员值的。
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
使用python向C语言的链接库传递数组、结构体、指针类型的数据 由于最近的项目频繁使用python调用同事的C语言代码,在调用过程中踩了很多坑,一点一点写出来供大家参考,我们仍然是使用ctypes来调用C语言的代码库。 至于如何调用基础数据类型的数据,请大家参考我的另外一篇文章:Python使用ctypes调用C/C++的方法 1. 使用python给C语言函数传递数组类型的参数 想必很多时候,C语言会使用数组作为参数,在之前我们使用过ctypes的一些数据类型作为C语言参数类型,包括byte、short、int、double之类的,但是在使用数组类型的时候,我们也是有着类似的做法,下面我们
C语言实例循环嵌套数组指针函数结构体
C语言的简单基本实例,包括循环、嵌套、数组、指针、函数、结构体等内容。
基于C#调用c++Dll结构体数组指针的问题详解
下面小编就为大家分享一篇基于C#调用c++Dll结构体数组指针的问题详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


