我是C语言新手。求大神解释一下这一道题,书里没解析的额

2021-03-08 19:24:40 字数 5097 阅读 6492

1楼:匿名用户

首先main函数里定义个结构体类型

struct cmplx该结构体包含两个成员变量x和y。

**um是结构体类型的数组,数组中有2个数组元素**um[0]和**um[1],每个数组元素都是结构体类型的变量。所以

**um[0].x=1,**um[0].y=3;

**um[1].x=2,**um[1].y=7;

则**um[0].y/**um[0].x***um[1].x的值是3/1*2=6

2楼:匿名用户

structcmplx

**um[2]=;//定义一个结构体,并同时定义一个该结构体类型的数组**um,初始化为:**um[0].x=1**um[0].

y=3**um[1].x=2**um[1].y=7

3楼:听不清啊

3/1*2=6

**um[0].x=1

**um[0].y=3

**um[1].x=2

我是个c语言新手,有道题不懂,求大神们解释一下

4楼:匿名用户

#include

void sub(int*,int*);

main(),i,x=0;

for(i=0;i<4;i++)

printf("\n");

}void sub(int *x,int *y)

5楼:匿名用户

x值一直未改变,你自己看看

求c语言大神给我解释一下这道c语言题目,输出结果为什么是s=30,i=12。我觉得应该是s=42,

6楼:

当i==12时由break;跳出for循环,也就跳过了for体中break;之后的所有语句,所以i==12时没有执行s=s+i;这一句。

一道c语言的题目,跪求大神解答,拜托能不能解释一下运行过程 5

7楼:油条大巴

#include

intmain()

,*p1[3],(*p2)[3];

//二维数组p有3行,每行有3个整数.

//应该写成intp[3][3]=,,};

//p等于0x28fee4,这是十六进制数,是内存地址,从这个内存地址开始,连续存放9个整数.

//p[0]等于0x28fee4,这是第0行的首地址,存放1,2,3这三个整数,每个整数占用内存4个字节,

//其中,[0x28fee4]=p[0][0]=1,[0x28fee8]=p[0][1]=2,[0x28feec]=p[0][2]=3

//p[1]等于0x28fef0,这是第1行的首地址,存放4,5,6这三个整数,每个整数占用内存4个字节,

//其中,[0x28fef0]=p[1][0]=4,[0x28fef4]=p[1][1]=5,[0x28fef8]=p[1][2]=6

//p[2]等于0x28fefc,这是第2行的首地址,存放7,8,9这三个整数,每个整数占用内存4个字节,

//其中,[0x28fefc]=p[2][0]=7,[0x28ff00]=p[2][1]=8,[0x28ff04]=p[2][2]=9

for(i=0;i<3;i++)p1[i]=p[i];

//int*p1[3]是"指针数组",是一种"数组",里面存放的是"指针",也就是存放"内存地址".

//定义p1里的数字"3"表示能存放3个"指针",也就是3个"内存地址".

//i分别等于0,1,2

//i=0时,p1[0]等于p[0]=0x28fee4,p1[0]指向p的第0行的首地址,也就是指向的首地址.

//i=1时,p1[1]等于p[1]=0x28fef0,p1[1]指向p的第1行的首地址,也就是指向的首地址.

//i=2时,p1[2]等于p[2]=0x28fefc,p1[2]指向p的第2行的首地址,也就是指向的首地址.

//p1等于0x28fed8,这是内存地址,

//内存地址0x28fed8里连续存放了三个数据:0x28fee4,0x28fef0,0x28fefc

//*p1=*(p1+0)等于0x28fee4,也就是*p1=p1[0]=p[0]=0x28fee4

//也就是*p1指向二维数组p的第0行的首地址

//*(p1+1)等于0x28fef0,也就是*(p1+1)=p1[1]=p[1]=0x28fef0

//也就是*(p1+1)指向二维数组p的第1行的首地址

//*(p1+2)等于0x28fefc,也就是*(p1+2)=p1[2]=p[2]=0x28fefc

//也就是*(p1+2)指向二维数组p的第2行的首地址

//所以,p1这个"指针数组",存放了三个内存地址,

//也就是.

//这三个数据就是三个"指针",也就是三个"内存地址",分别是二维数组p的三行整数的首地址.

//例如,*(p1+1)+0指向p[1]的第0个整数4的内存地址

//*(p1+1)+1指向p[1]的第1个整数5的内存地址

//*(p1+1)+2指向p[1]的第2个整数6的内存地址

//*(*(p1+0)+0)=p[0][0]=1

//*(*(p1+0)+1)=p[0][1]=2

//*(*(p1+0)+2)=p[0][2]=3

//*(*(p1+1)+0)=p[1][0]=4

//*(*(p1+1)+1)=p[1][1]=5

//*(*(p1+1)+2)=p[1][2]=6

//*(*(p1+2)+0)=p[2][0]=7

//*(*(p1+2)+1)=p[2][1]=8

//*(*(p1+2)+2)=p[2][2]=9

p2=p;

//int(*p2)[3]是"数组指针".语句p2=p表示"数组指针"p2指向二维数据p的首地址.

//定义p2里的数字"3"表示每行有3个整数.

//p2等于0x28fee4,这是内存地址,是二维数据p的首地址.

//*p2=*(p2+0)=p[0]=整数p[0][0]的内存地址

//*(p2+1)=p[1]=整数p[1][0]的内存地址

//*(p2+2)=p[2]=整数p[2][0]的内存地址

//*(*p2+0)=*(*(p2+0)+0)=p[0][0]=1

//*(*p2+1)=*(*(p2+0)+1)=p[0][1]=2

//*(*p2+2)=*(*(p2+0)+2)=p[0][2]=3

//*(*(p2+1)+0)=p[1][0]=4

//*(*(p2+1)+1)=p[1][1]=5

//*(*(p2+1)+2)=p[1][2]=6

//*(*(p2+2)+0)=p[2][0]=7

//*(*(p2+2)+1)=p[2][1]=8

//*(*(p2+2)+2)=p[2][2]=9

for(i=1;i<3;i++)

printf("%d,%d\n",*(*(p1+i)+1)+1,*(*++p2+1)+1);

//i分别等于1,2

//i=1时,*(*(p1+i)+1)+1=*(*(p1+1)+1)+1

//其中,*(p1+1)等于0x28fef0,也就是*(p1+1)=p1[1]=p[1]=0x28fef0

//也就是*(p1+1)指向二维数组p的第1行的第0个整数的内存地址

//而*(p1+1)+1指向二维数组p的第1行的第1个整数的内存地址

//*(*(p1+1)+1)就是提取"第1行的第1个整数",也就是

//*(*(p1+1)+1)=p[1][1]=5

//所以,*(*(p1+1)+1)+1=5+1=6(这是屏幕输出的第一行第一个整数)

//对于*(*++p2+1),原本是*(*(p2+0)+1)=p[0][1]=2

//由于有"++p2"的运算,成为*(*(p2+1)+1)=p[1][1]=5

//所以,*(*++p2+1)+1=5+1=6(这是屏幕输出的第一行第二个整数)

//i=2时,*(*(p1+i)+1)+1=*(*(p1+2)+1)+1

//其中,*(p1+2)等于0x28fefc,也就是*(p1+2)=p1[2]=p[2]=0x28fefc

//也就是*(p1+2)指向二维数组p的第2行的第0个整数的内存地址

//而*(p1+2)+1指向二维数组p的第2行的第1个整数的内存地址

//*(*(p1+2)+1)就是提取"第2行的第1个整数",也就是

//*(*(p1+2)+1)=p[2][1]=8

//所以,*(*(p1+2)+1)+1=8+1=9(这是屏幕输出的第二行第一个整数)

//对于*(*++p2+1),之前i等于1时,是*(*(p2+1)+1)

//由于有"++p2"的运算,现在成为*(*(p2+2)+1)=p[2][1]=8

//所以,*(*++p2+1)+1=8+1=9(这是屏幕输出的第二行第二个整数)

//所以,程序输出的第一行是6,6,第二行是9,9

return0;}

一道c语言题,求高手解释下这题,一道C语言题

1楼 樣小樣 我把行分好点,直观点 总的目的就是找出50 60中的质数 素数 include stdio h main 输出j k 用来控制转行 如还有其他不明,可继续提问。 2楼 百度用户 include stdio h main 3楼 匿名用户 找素数的程序 ,只是其中的好几句语句没有用 4楼 ...

求C语言大神,帮忙解释一下这道题的选项,刚入门C语言

1楼 匿名用户 a选项2的二进制是010,5的二进制是101,所以2与5的结果是0,即条件为假,所以不能形成死循环 bwhile中是逗号表达式,取最后一个表达式3的值为真,所以是死循环 cd中 0 是字符的ascii值为0的转义字符,所以为假,不构成死循环条件 2楼 天云一号 a2 5 0 所以不会...

c语言的问题跪求大神解释,C语言的一个问题 跪求大神解释

1楼 八进制转义字符 它是由反斜杠 和随后的1 3个八进制数字构成的字符序列。例如, 60 101 141 分别表示字符 0 a 和 a 。因为字符 0 a 和 a 的ascii码的八进制值分别为60 101和141。 字符集中的所有字符都可以用八进制转义字符表示。 如果你愿意,可以在八进制数字前面...