如果我有一个结构,说:
struct A {
int a,b,c,d,e;
}
A m;//struct if 5 ints
int n[5];//array of 5 ints.
Run Code Online (Sandbox Code Playgroud)
我知道数组中的元素是一个接一个地存储的,所以我们可以使用*(n + i)或n [i]
但是在struct的情况下,每个元素是否彼此相邻存储(在结构A中)?
我正在浏览我朋友的obj加载代码.他用C++完成了它; 代码是:
bool LoadObj(char* given){
char tempText[60];
std::ifstream OB(given);
OB.seekg(0,OB.end); int length = OB.tellg() ; OB.seekg(0,OB.beg);
char* STREAM = new char[length];
OB.read(STREAM,length);
OB.close();
char *t,dump[20];
int Number_Of_Vertices,Number_Of_faces;
t = strstr(STREAM,"vertices");
sscanf(&STREAM[&t[0]-&STREAM[0]-10],"%s # %i vertices",&dump,&Number_Of_Vertices);
printf("\nthere are %i vertices",Number_Of_Vertices);
t = strstr(STREAM,"faces");
sscanf(&STREAM[&t[0]-&STREAM[0]-10],"%s # %i faces",&dump,&Number_Of_faces);
printf("\nthere are %i faces",Number_Of_faces);
......
Run Code Online (Sandbox Code Playgroud)
当我通过加载obj文件测试它时,它正确打开.但是我不明白第一个论点sscanf(),即:&STREAM[&t[0]-&STREAM[0]-10].请解释它是如何工作的?