【发布时间】:2012-02-04 18:48:21
【问题描述】:
考虑:
struct
{
char *rcssMonitoredServices;
int nSomeVar;
} appinfo;
常规使用:
appinfo.rcssMonitoredServices=strdup("something");
但是现在考虑:
char *RefToStructVar[]=
{
appinfo.rcssMonitoredServices,
"\0"
};
目的是我们可以使用 RegToStructVar[0] 指针对 appinfo.rcssMonitoredServices 执行操作。
我在数组中指向变量是有充分理由的。在整数变量的情况下,我们是 A-OK。指向 *char 的指针完全不同。
如果我对 appinfo.nSomeVar 使用相同的技术
int *varpointers[] =
{
&appinfo.nSomeVar,
0
};
varpointers[0]=196;
printf("%i",appinfo.nSomeVar) // -> "196"
我认为,鉴于 RefToStructVar[0] 包含指向 appinfo.rcssMonitoredServices 的指针,做类似的事情
RefToStructVar[0]=strdup("something");
将等同于:
appinfo.rcssMonitoredServices=strdup("something");
但是没有。
这个
RefToStructVar[0]=strdup("something");
段错误。
也许是基本的..但现在我很困惑。
--
稍后
以下是段错误:
struct
{
char *cVar;
int n;
} mystruct;
char *aVars[]=
{
mystruct.cVar,
"\0"
};
aVars[0]=strdup("something");
这行得通:
struct
{
char *cVar;
int n;
} mystruct;
char **aVars[]=
{
&mystruct.cVar,
"\0"
};
*aVars[0]=strdup("something");
【问题讨论】:
-
您的问题过于复杂。你能简单地展示一个段错误的完整例子吗?
-
@cnicutar 编辑成问题。