
C语言问题,求详解!!!急急急~~~
1.设有如下枚举型定义,则black的枚举型值是?enmucolor{red=3,yellow,blue=-1,white,black};(我想知道这道题应该怎么想)2....
1.设有如下枚举型定义,则black的枚举型值是?
enmu color {red=3,yellow,blue=-1,white,black};
(我想知道这道题应该怎么想)
2.下述程序段输出的结果是?
void main()
{
int t[3][3]={1,2,3,4,5,6,7,8,9},*pt[3],**ppt=pt,k;
for(k=0;k<3;k++)pt[k]=&t[k][0];
ppt++;
printf("%d",*(*(ppt+1)+2));
}
这道题,看不太懂,请高人指教!!! 展开
enmu color {red=3,yellow,blue=-1,white,black};
(我想知道这道题应该怎么想)
2.下述程序段输出的结果是?
void main()
{
int t[3][3]={1,2,3,4,5,6,7,8,9},*pt[3],**ppt=pt,k;
for(k=0;k<3;k++)pt[k]=&t[k][0];
ppt++;
printf("%d",*(*(ppt+1)+2));
}
这道题,看不太懂,请高人指教!!! 展开
展开全部
如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始, 顺次赋给标识符0, 1, 2, ...。但当枚举中的某个成员赋值后, 其后的成员按依次加1的规则确定其值。
例如下列枚举说明后, x1, x2, x3, x4的值分别为0, 1, 2, 3。
enum string{x1, x2, x3, x4}x;
当定义改变成:
enum string
{ x1, x2=0, x3=50, x4, }x;
则x1=0, x2=0, x3=50, x4=51
关于第二个问题:
关键在于 int *pt[3],**ppt=pt; 的理解
应该是,变量pt 是一个可以有三个成员的数组,每个成员均是一个整形指针变量,所以有
后面的pt[k] = &t[k][0];
pt是数组,ppt则是指向数组的指针,也就是我们所说的二级指针,并且是针对整形数的。
ppt赋初值指向pt的第一个元素,**ppt=pt 等价于 **ppt=&pt[0];
ppt++,会令其指向其第二个数组元素 也就是pt[1];
*(*(ppt+1)+2)中 *(ppt+1)表示对pt数组的第三个元素取出其内容,里面是一个地址指针,指向
t[2][0],该地址向后移,做指针+2操作,指向t[2][2]. 最后取出该内容
例如下列枚举说明后, x1, x2, x3, x4的值分别为0, 1, 2, 3。
enum string{x1, x2, x3, x4}x;
当定义改变成:
enum string
{ x1, x2=0, x3=50, x4, }x;
则x1=0, x2=0, x3=50, x4=51
关于第二个问题:
关键在于 int *pt[3],**ppt=pt; 的理解
应该是,变量pt 是一个可以有三个成员的数组,每个成员均是一个整形指针变量,所以有
后面的pt[k] = &t[k][0];
pt是数组,ppt则是指向数组的指针,也就是我们所说的二级指针,并且是针对整形数的。
ppt赋初值指向pt的第一个元素,**ppt=pt 等价于 **ppt=&pt[0];
ppt++,会令其指向其第二个数组元素 也就是pt[1];
*(*(ppt+1)+2)中 *(ppt+1)表示对pt数组的第三个元素取出其内容,里面是一个地址指针,指向
t[2][0],该地址向后移,做指针+2操作,指向t[2][2]. 最后取出该内容
展开全部
1,重新开始的意思,black=1;
2,不说了,闹心
2,不说了,闹心
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一题:
black的值为1
第二题:
int main()
{
int t[3][3]={1,2,3,4,5,6,7,8,9},*pt[3],**ppt=pt,k;//定义一个二维数组,一个一维数组,一个二级指针,ppt指向pt数组首地址
for(k=0;k<3;k++)
pt[k]=&t[k][0];//pt[0]指向t[0][0]的地址,pt[1]指向t[1][0]的地址,pt[2]指向t[2][0]的地址
ppt++;//将ppt指向pt[1]的地址
printf("%d",*(*(ppt+1)+2));//ppt+1是指向pt[2]的地址,取值后得到t[2][0]的地址,再加2,得到t[2][2]的地址,取值后得到t[2][2]的值为9
return 0;
}
所以程序的最后输出为9
black的值为1
第二题:
int main()
{
int t[3][3]={1,2,3,4,5,6,7,8,9},*pt[3],**ppt=pt,k;//定义一个二维数组,一个一维数组,一个二级指针,ppt指向pt数组首地址
for(k=0;k<3;k++)
pt[k]=&t[k][0];//pt[0]指向t[0][0]的地址,pt[1]指向t[1][0]的地址,pt[2]指向t[2][0]的地址
ppt++;//将ppt指向pt[1]的地址
printf("%d",*(*(ppt+1)+2));//ppt+1是指向pt[2]的地址,取值后得到t[2][0]的地址,再加2,得到t[2][2]的地址,取值后得到t[2][2]的值为9
return 0;
}
所以程序的最后输出为9
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
student
因为这个程序的功能就是将字符串"I am student"中的'a'去除。
3运行结果是:BCD
num++;//程序从上到下执行,因此先执行此行,再执行下一行,改为++num;结果也一样。
printf("%c",'A'+num);
//补充补充补充补充补充
main()
{int a;
a=1;
a++;
printf("%d",a);
}
//结果不可能为1,结果是2啊!自己运行下!!!!!!
因为这个程序的功能就是将字符串"I am student"中的'a'去除。
3运行结果是:BCD
num++;//程序从上到下执行,因此先执行此行,再执行下一行,改为++num;结果也一样。
printf("%c",'A'+num);
//补充补充补充补充补充
main()
{int a;
a=1;
a++;
printf("%d",a);
}
//结果不可能为1,结果是2啊!自己运行下!!!!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询