c语言题。求解执行以下程序后输出值,以及详细解答步骤。谢谢。
#include<stdio.h>intmain(void){structwc{inta,*b;}*p;intx0[]={11,12},x1[]={31,32};stat...
#include<stdio.h>
int main(void)
{
struct wc{int a,*b;}*p;
int x0[]={11,12},x1[]={31,32};
static struct wc x[2]={100,x0,300,x1};
p=x;
printf("%d",*(++p)->b);
} 展开
int main(void)
{
struct wc{int a,*b;}*p;
int x0[]={11,12},x1[]={31,32};
static struct wc x[2]={100,x0,300,x1};
p=x;
printf("%d",*(++p)->b);
} 展开
1个回答
展开全部
最终值为 31
struct wc{int a,*b;}*p; 是一个结构体的声明。
static struct wc x[2]={100,x0,300,x1}; 这个是结构体数组的变量的定义和初始化。
即结构体数组元素: x[0] = {100,x0}; x[1] = {300,x1};
p=x ; 就是结构体指针 p 指向 结构体数组的首地址 x 为数组的首地址。
printf("%d",*(++p)->b); 先执行 括号内的: ++p 是先地址+1 ,后将使用这个地址,即 (++p) 后相当于 p=p+1 ; 即 此时 p 执行数组的第二个元素 x[1]; p->b 取到的是 x1 数组首元素的地址,即最终 *(++p) ->b = 31 就是 数组 x1 的第一个元素的值
struct wc{int a,*b;}*p; 是一个结构体的声明。
static struct wc x[2]={100,x0,300,x1}; 这个是结构体数组的变量的定义和初始化。
即结构体数组元素: x[0] = {100,x0}; x[1] = {300,x1};
p=x ; 就是结构体指针 p 指向 结构体数组的首地址 x 为数组的首地址。
printf("%d",*(++p)->b); 先执行 括号内的: ++p 是先地址+1 ,后将使用这个地址,即 (++p) 后相当于 p=p+1 ; 即 此时 p 执行数组的第二个元素 x[1]; p->b 取到的是 x1 数组首元素的地址,即最终 *(++p) ->b = 31 就是 数组 x1 的第一个元素的值
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询