以下是它给我和我的代码的错误:
workspace.c:在函数'main'中:
workspace.c:38:错误:下标值既不是数组也不是指针
workspace.c:39:错误:下标值既不是数组也不是指针
任何输入都将不胜感激!谢谢你的时间。
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <sys/types.h>
#include <string.h>
#include <dirent.h>
#include <sys/time.h>
#include <fcntl.h>
#define n 4
struct process
{
struct segment{
struct page
{
int pid;
int p[4];
}pages;
}segments;
};
struct process processes[3];
struct page pages[n];
struct segment segments[n];
int main()
{
int a, b, c;
int k = 0;
for(a = 0; a < 3; a++)
{
for(b = 0; b < 4; b++)
{
for(c = 0; c < 4; c++)
{
k++;
processes[a].segments[b].pages[c].pid = k;
printf("Segment: %d, Page: %d, PID: %d\n",a,b,processes[a].segments[b].pages[c].pid);
}
}
}
return 0;
}
答案 0 :(得分:1)
请参阅此代码:Tested with no error
#define n 4
struct process
{
struct segment{
struct page
{
int pid;
int p[4];
}pages[n];
}segments[n];
}processes[3];
int main()
{
int a, b, c;
int k = 0;
for(a = 0; a < 3; a++)
{
for(b = 0; b < 4; b++)
{
for(c = 0; c < 4; c++)
{
k++;
processes[a].segments[b].pages[c].pid = k;
printf("Segment: %d, Page: %d, PID: %d\n",a,b,processes[a].segments[b].pages[c].pid);
}
}
}
return 0;
}
答案 1 :(得分:0)
您的segments
元素仅显示为单个结构。你的图表(以及你似乎打算使用它的方式)表明它应该是它们的数组,如:
struct process
{
struct segment{
struct page
{
int pid;
int p[4];
}pages;
}segments[4]; // <-------- [4]
};
你也宣布:
struct page pages[n];
struct segment segments[n];
你从未真正使用过......你(理所当然,我认为)在你的过程结构中使用他们的亲属。 (这也意味着你有效地忽略了#define n)