c语言的一道题若有以下程序段:struct st{int n;int *m;};int a=2,b=3,c=5;stru
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/06/22 06:59:00
c语言的一道题
若有以下程序段:
struct st
{int n;
int *m;};
int a=2,b=3,c=5;
struct st s[3]=({101,&a},{102,&c},{103,&b}};
main()
{struct st *p;
p=s;
…}
则以下表达式中值为5的是( ).
A)(p++)->m
B)*(p++)->m
C)(*p).m
D)*(++p)->m
答案是选D 我选的是A,我觉的D选项不能这么用吧,要不就指针变量名->成员名,要不就(*指针变量名).成员名,不能这么用吧,A选项p++->和(p++)->意义一样吗?
若有以下程序段:
struct st
{int n;
int *m;};
int a=2,b=3,c=5;
struct st s[3]=({101,&a},{102,&c},{103,&b}};
main()
{struct st *p;
p=s;
…}
则以下表达式中值为5的是( ).
A)(p++)->m
B)*(p++)->m
C)(*p).m
D)*(++p)->m
答案是选D 我选的是A,我觉的D选项不能这么用吧,要不就指针变量名->成员名,要不就(*指针变量名).成员名,不能这么用吧,A选项p++->和(p++)->意义一样吗?
![c语言的一道题若有以下程序段:struct st{int n;int *m;};int a=2,b=3,c=5;stru](/uploads/image/z/4198588-52-8.jpg?t=c%E8%AF%AD%E8%A8%80%E7%9A%84%E4%B8%80%E9%81%93%E9%A2%98%E8%8B%A5%E6%9C%89%E4%BB%A5%E4%B8%8B%E7%A8%8B%E5%BA%8F%E6%AE%B5%EF%BC%9Astruct+st%7Bint+n%3Bint+%2Am%3B%7D%3Bint+a%3D2%2Cb%3D3%2Cc%3D5%3Bstru)
做题目一般是用排除法,比较容易.
首先明确几点,p是指向结构体类型的指针,m是指向整形的指针,同时作为指针,想获得c的值即5,A和C可以同时排除:
A中的结果是个指针,不可能是5
C中语法错误,m是指针必须用->来访问
B和D的区别就在前加加和后加加,p是个指针,对指针做加加运算会跳过一个数据位,而数据位大小取决于p的类型,这里会跳过一个st结构体大小,p初始时指向s[0],加加之后会指向s[1],s[1]中的m指向的值正是我们需要的,显然前加加更适合,我们需要的就是加加立即生效.
至于你说的那个p++->和(p++)->的区别,没试过我无法回答你,我只能告诉你没人会这样写,如果需要自加运算,必然会加括号,属于不成文的规范.其实很多时候不用太纠结这些太细的东西.
首先明确几点,p是指向结构体类型的指针,m是指向整形的指针,同时作为指针,想获得c的值即5,A和C可以同时排除:
A中的结果是个指针,不可能是5
C中语法错误,m是指针必须用->来访问
B和D的区别就在前加加和后加加,p是个指针,对指针做加加运算会跳过一个数据位,而数据位大小取决于p的类型,这里会跳过一个st结构体大小,p初始时指向s[0],加加之后会指向s[1],s[1]中的m指向的值正是我们需要的,显然前加加更适合,我们需要的就是加加立即生效.
至于你说的那个p++->和(p++)->的区别,没试过我无法回答你,我只能告诉你没人会这样写,如果需要自加运算,必然会加括号,属于不成文的规范.其实很多时候不用太纠结这些太细的东西.
c语言的一道题若有以下程序段:struct st{int n;int *m;};int a=2,b=3,c=5;stru
struct st{int x;int*y;}*p;inta[]={1,2},b[]={3,4};struct st c
c语言这段程序看不懂int fun(int a,int b,int c){ int t; t=(a>b)?(b>c?b:
Struct Struct st {int x;int *y;}*pt; Int a[]={1,2},b[]={3,4}
有以下定义的链表struct st{int n,struct st *next;}a[3]={5,&a[1],7,&a[
刚学的C语言struct stint i;int j;int *q;main(){struct m[]={{10,1},
C语言的一道提void primenum(int m,int k,int array[]){ int value = m
答案为什么选B?设有以下程序段,则值为6的表达式是( ).struct st{ int n; struct st *ne
C语言 int a;int b; }d[3] ={{1,4},{2,5},{6,7}}; printf("%d\n",d
C语言 填空题7、以下程序输出的结果是 0 .main() { int a=5,b=4,c=3,d; d=(a>b>c)
二级c语言的一道题有以下程序#include main(){ int a =-2,b=0;while(a++&&++b)
C语言习题(结构 )单选题1.有以下定义:struct { int x;int y;} a={ 5,7},*p=&a;