C语言问题,求详解!!!急急急~~~

[复制链接]
查看11 | 回复1 | 2011-3-11 03:44:54 | 显示全部楼层 |阅读模式
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;k3;k)pt[k]=
ppt;
printf(\"%d\",*(*(ppt 1) 2));
}
这道题,看不太懂,请高人指教!!!
回复

使用道具 举报

千问 | 2011-3-11 03:44:54 | 显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">如果枚举没有初始化, 即省掉\"=整型常数\"时, 则从第一个标识符开始, 顺次赋给标识符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] =
pt是数组,ppt则是指向数组的指针,也就是我们所说的二级指针,并且是针对整形数的。
ppt赋初值指向pt的第一个元素,**ppt=pt等价于 **ppt=
ppt,会令其指向其第二个数组元素 也就是pt[1];
*(*(ppt 1) 2)中 *(ppt 1)表示对pt数组的第三个元素取出其内容,里面是一个地址指针,指向
t[2][0],该地址向后移,做指针 2操作,指向t[2][2].最后取出该内容
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行