18个回答
展开全部
这涉及到两个知识点:指针和自加运算符作为前缀和后缀运算符的区别。
为了具体分析,简单的写如下程序:
#include <stdio.h>
//自定一个结构体。指向结构体中的变量是指针用的最多的场合,有典型意义
struct node
;
main()
{
//结构体数组 array
struct node array[4]=,,,};
//结构体指针 p
struct node *p=array;
printf("%d\n",(++p) ->a);
printf("%d\n",(p++)->a);
}
运行结果为:
1
1
运行结构分析:
指针初始时指针结构体数组 array的第0个元素 ,即 p->a=array[0].a=0
语句(++p) ->a ,由于是自加运算作为前缀,要在 p先加一, 即指针p指向了 array的第1个元素array[1],输出结构为1.p 指向了array[1]。
语句(p++)->a,由于是自加运算符作为后缀,指针本身不加一,依然指向 array的第1个元素array[1],],(p++)->a=array[1].a=1。. p 才加一,指向 arry的第2个元素array[2].
总结:
自加运算符作为前缀运算符,执行所在语句时变量就已经加一。
自加运算符作为后缀运算符,执行完所在语句时变量才加一。
为了具体分析,简单的写如下程序:
#include <stdio.h>
//自定一个结构体。指向结构体中的变量是指针用的最多的场合,有典型意义
struct node
;
main()
{
//结构体数组 array
struct node array[4]=,,,};
//结构体指针 p
struct node *p=array;
printf("%d\n",(++p) ->a);
printf("%d\n",(p++)->a);
}
运行结果为:
1
1
运行结构分析:
指针初始时指针结构体数组 array的第0个元素 ,即 p->a=array[0].a=0
语句(++p) ->a ,由于是自加运算作为前缀,要在 p先加一, 即指针p指向了 array的第1个元素array[1],输出结构为1.p 指向了array[1]。
语句(p++)->a,由于是自加运算符作为后缀,指针本身不加一,依然指向 array的第1个元素array[1],],(p++)->a=array[1].a=1。. p 才加一,指向 arry的第2个元素array[2].
总结:
自加运算符作为前缀运算符,执行所在语句时变量就已经加一。
自加运算符作为后缀运算符,执行完所在语句时变量才加一。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ce啥,ggpaia
追答
ce啥,ggpaia
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自定义字符,一般用来表示连加,相当于数学符号σ。例如:表示1+2+3+···+100,可以用σi(i=1到i=100)来表达,相应的c程序可以写作:
int
i,sigma=0;
for(i=1;i<=100;i++)
sigma=sigma+i;
int
i,sigma=0;
for(i=1;i<=100;i++)
sigma=sigma+i;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询