C语言高手请进~~~~~

struct s { int i1; struct s *i2;};
static struct s a[3]={1,&a[1],2,&a[2],3,&a[0]}, *ptr;
ptr = &a[1];
则以下表达式【D 】的结果是3。
(A) ptr->i1++ (B) ptr++->i1
(C) *ptr->i1 (D) ++ptr->i1
请解释一番~~~~~~~为什么在i1没有赋值的情况下还能够使用它?
是什么意思啊?
那么a[0]={1,&a[1]}中的&a[1]又是什么意思呢?

i1已经赋值了阿
static struct s a[3]={1,&a[1],2,&a[2],3,&a[0]},这里定义了一个 结构数组a ,并且将其初始化了,其中a[0]={1,&a[1]},a[1]={2,&a[2]}
a[2]={3,&a[0]},
后面ptr = &a[1];就是让ptr指向a[1],所以ptr的值就是{2,&a[2]},
也就是ptr->i1=2,答案d又给他做了自增1,结果为3了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-06-18
i1是被赋值了,赋值的是2啊
a[3]={1,&a[1],
2,&a[2],
3,&a[0]}

这样看就明白些了
上边就是把a[0]结构体元素的地址赋值为a[1]结构体元素的地址,所以ptr=&a[1],ptr就指向了a[1]结构体

C语言高手请进~~~
后面ptr = &a[1];就是让ptr指向a[1],所以ptr的值就是{2,&a[2]},也就是ptr->i1=2,答案d又给他做了自增1,结果为3了。

c语言问题,高手请进谢谢!!!
1、++i 时i加1得到i,此时的i=2;2、++i 时i加1得到i,此时的i=2+1=3;3、此时前面有两个i等待运行,即i+i--->这两个i些时都是3;而不是一个2,一个3;4。再一个++i 此时i加1得到i,i=3+1=4;由上面的理解知道i此时已经是4,5、由上面四步得到一个i=4,i+i+i的式...

高分C语言问题~~·高手请进
思路:A[n]中,n代表有多少堆果子,A中的元素代表各堆的果子数目 int getValue(int A[]){ 初始 int S=0 1. (数组A)n个数字从小到大排序 (例如:1,2,9)2. 取上步中最小的两个数相加之和为一个M , S=S+M 3. 数组A中除去最小的两个数,然后将M加进去形成一个新数组A元素个数为 n...

C语言编程问题.请高手进(附源码)!!!HELP
printf("请输入菜名,按回车键结束\\n");scanf("%s",A);printf("\\n请输入拼音码(菜名首字母)&编码&价格{回车确定}\\n");scanf("%s%d%f",c,&d,&e);printf("此款菜:类别为%d,编码为%d,拼音吗为%s,菜名为%s,价格为%f\\n是否正确?(正确请输入1,否则按任意键退出):",b,d,c,A,e);scan...

编程高手请进!(C语言)
scanf("%c",&yes);} } 2.include <stdio.h> void main(){ int gj, mj, xj, t1, t2;for (gj=1; gj<=20; gj++){ for (mj=1; mj<34; mj++){ xj=100-gj-mj;t1=xj%3;t2=5*gj+3*mj+xj\/3;if (t1==0&&t2==100)printf("gj=%d,mj=%d,xj=%d\\n",gj,mj,xj);} }...

求C语言程序,高手请进...
输入一个字符串s,再输入一个字符c,将字符串s中出现的所有字符c删除。要求定义并调用函数delchar(s,c),它的功能是将字符串中的出现的所有c字符删除 输入输出示例 Input a string: happy new year Input a char: a After deleted, the string is: hppy new yer*\/ \/*#include <stdio.h> i...

C语言高手进………
struct node *next;}NODE;void sort1(NODE *head) \/\/ 由大到小排序 { int t;for(NODE *p = head;p != NULL; p = p->next){ for(NODE *s = p->next;s != NULL; s = s->next)if(p->data < s->data){ t = p->data;p->data = s->data;s->data = t;} } }...

C语言高手请进啊,高分哦,详细的解释!!!
即 第一个元素为 p[0][0]定义的数组为二维。所以 p[1] 是第二行的全部元素 即 France 另外它不是省略的 p[1][0],两者不同,前者是一行,后者是一个 另外,你可以从c语言的打印方式看出,前者 %s 是打印字符串 后者 %c 是打印字符(一个)希望对你有帮助啊!

c语言高手请进
include <stdio.h> int main(){ int i,j,k;for(i=0;i<9;i++){ for(j=0;j<9;j++){ for(k=0;k<9;k++){ if((i+j+k)<10 && i!=0)printf("%d%d%d ",i,j,k);} } } return 0;} 都类似的,只要改改if里的条件就可以了...q币啊.....

C语言编程问题,高手请进,急问!
??比如在1秒内没有按键,但不能保证下1秒还是没有按键,难道就一直的等下去?如果是在一些开发环境中,可以将判断按键是不是为回车写在OnKeyPress事件上。下面只给出一个输出按的什么键的程序 int getkey(){ int c;c = getchar();putchar(c);return c;} ...

相似回答
大家正在搜