我是 C 世界的新手。我是自学的,希望能在几个问题上得到帮助。
该程序是本示例中编写的程序的简化变体,用于演示指针与结构数组的使用。我无法理解的事情是:
- 数组如何在第一个 for 循环中递增。运算符直接用于结构数组,而
++
我预计需要in_p[i]
在循环内部执行更多操作(i 是一个递增的 int)。 - 在此循环中进行比较的方式。我不认为这
in_p < &ar[ARSIZE]
是可能的,因为两者都是 typestruct wp_char
。这里实际比较的是什么?
本书中的示例和我的示例都可以编译和运行。
谢谢你。
#include <stdio.h>
#include <stdlib.h>
#define ARSIZE 5
struct wp_char{
char wp_cval;
short wp_font;
short wp_psize;
}ar[ARSIZE];
void infun(struct wp_char *, char cval, int font, int psize);
int main(void)
{
struct wp_char wp_tmp, *lo_indx, *hi_indx, *in_p;
char c[] = {'a','b','c','d','e'};
int i1[] = {2,3,4,5,6};
int i2[] = {7,8,9,10,11};
int i = 0;
for(in_p = ar; in_p < &ar[ARSIZE]; in_p++){
infun(in_p, c[i], i1[i], i2[i]);
i++;
}
int j;
for(j=0;j<ARSIZE;j++)
{
printf("%c\n",c[j]);
printf("%d\n",i1[j]);
printf("%d\n",i2[j]);
puts("\n");
}
exit(0);
}
void infun( struct wp_char *inp, char cval, int font, int psize)
{
`
inp->wp_cval = cval;
inp->wp_font = font;
inp->wp_psize = psize;
return;
}