我在由perl脚本生成的文件中有以下声明(在编译期间):
struct _gamedata
{
short res_count;
struct
{
void * resptr;
short id;
short type;
} res_table[3];
}
_gamecoderes =
{
3,
{
{ &char_resource_ID_RES_welcome_object_ID,1002, 1001 },
{ &blah_resource_ID_RES_another_object_ID,1004, 1003 },
{ &char_resource_ID_RES_someting_object_ID,8019, 1001 },
}
};
Run Code Online (Sandbox Code Playgroud)
我的问题是struct _gamedata在编译期间生成,并且项目的数量res_table会有所不同.所以我不能提供一种res_table预先声明尺寸的类型.
我需要解析这个结构的一个实例,最初我是通过一个指向char的指针(并没有定义struct _gamedata为一个类型.)但我正在定义res_table.
例如
char * pb = (char *)_gamecoderes;
// i.e. pb points to the instance of `struct _gamedata`.
short res_count = (short *)pb;
pb+=2;
res_table * entry = (res_table *)pb; …Run Code Online (Sandbox Code Playgroud) 帖子我可以使用什么而不是箭头操作符,` - >`? 和箭头操作员-在C(>)的使用 状态
以下两个表达式是等效的:
Run Code Online (Sandbox Code Playgroud)x->y (*x).y
但是,当作为数学等价时,这似乎并不总是正确的.
为什么g ++在替换时会抛出错误
a->b->c
Run Code Online (Sandbox Code Playgroud)
同
a->(*b).c
Run Code Online (Sandbox Code Playgroud)
?
看来上述等价并不总是可以替换的.因此,我认为"等同"一词有点误导.
另外,我不是指这个问题中的任何超载.
可能重复:C中的
箭头运算符( - >)用法
我想弄清楚"."之间的区别.和" - >"C语言中的数据访问风格.例如.
struct div{
int quo;
int rem;
};
Run Code Online (Sandbox Code Playgroud)
1)使用" - >"
struct div *d = malloc(sizeof(struct div));
d->quo = 8/3;
d->rem = 8%3;
printf("Answer:\n\t Quotient = %d\n\t Remainder = %d\n-----------\n",d->quo,d->rem);
Run Code Online (Sandbox Code Playgroud)
2)使用"."
struct div d;
d.quo = 8/3;
d.rem = 8%3;
printf("Answer:\n\t Quotient = %d\n\t Remainder = %d\n-----------\n",d.quo,d.rem);
Run Code Online (Sandbox Code Playgroud)
我得到两个案件的相同输出.
答案:商数= 2剩余= 2
这两种方法如何在内部运作?什么时候应该使用哪一个?我尝试在互联网上搜索但没有多大帮助.任何相关链接也表示赞赏.
他们在内存中的存储也有什么区别吗?
可能重复:
C 点(".")运算符中的箭头运算符( - >)用法
和箭头(" - >")运算符用于C与Objective-C
我是一个新手,看着2008年最新更新的免费软件/开源程序,我不承认->以下符号:
- (id)copyWithZone:(NSZone *)zone
{
GFIPGeniusItem * newItem = [[[self class] allocWithZone:zone] init];
newItem->_stringValue = [_stringValue copy];
newItem->_imageURL = [_imageURL copy];
newItem->_webResourceURL = [_webResourceURL copy];
newItem->_speakableStringValue = [_speakableStringValue copy];
newItem->_soundURL = [_soundURL copy];
return newItem;
}
Run Code Online (Sandbox Code Playgroud)
我假设它允许某种捷径,但我特别喜欢它的功能.
问题是实现Cplx具有两个双精度的类,x并y表示复数的实部和虚部.
其中一个子任务是实现operator ->以下描述:
(z->re和z->im):访问z(你必须实现改变之类z->re = 5)的实部和虚部.
我遇到麻烦operator ->我从来没有真正理解它是如何工作的所以我的问题是:如何->工作以及何时使用它以及如何在这个问题中应用这个想法.
可能重复:C中的
箭头运算符( - >)用法
据我所知,只有C++可以使用类(obj->某些东西)但是我在很多C应用程序中看到过这个运算符.
还有一个小问题.通常一个人使用C中的结构,如下所示:
structname.somevariable
Run Code Online (Sandbox Code Playgroud)
但是,我看到他们使用像:
structname.something1.something2
Run Code Online (Sandbox Code Playgroud)
它与关键字union有关吗?
"."之间有什么区别?访问C结构中的数据时," - >"?我几次尝试都找不到任何区别.两者都为我提供了对欲望数据的访问