首页上一页 1 下一页尾页 1 条记录 1/1页
《C语言编程之道》上的一个小问题
发表在C语言图书答疑
2012-11-09
是否精华
是
否
版块置顶:
是
否
前日在图书馆翻阅到《C语言编程之道》,仔细阅读,收获颇丰,便借回宿舍进一步学习。
在翻阅的过程中发现问题如下:
说法一(第50页):
/*
例4.19 使用变量表示数组长度产生的错误
#include<stdio.h>
void main()
{
int i,max;
int ts=5;
int temp[ts]={20,12,40,31,25};
....
....
printf("数组temp的最大值为:%d\n",max);
}
上面的代码运行程序后,显示了错误信息,如图所示....
2.陷阱的分析
在进行数组定义时,数组的长度要使用常量或者符号常量,不可以使用变量。C语言不允许对数组的长度做动态的定义。
3.陷阱的解决方法
const int ts=5;
int temp[ts]={20,12,40,31,25};
*/
说法二(第73页):
倒数第10行
/*
const限定的对象通常是运行时不能被赋值的对象,因此用const限定的对象的值并不是一个真正的常量,不能用作数组维度等。
例如:
const int n=10;
int a[n];
根据上面的讲解可知道,上面这两行代码有问题,不能使用const定义的常量来做数组的维度。
*/
由此可见,前后两个说法是矛盾的。说法一认为可以通过在数据类型前面加上const来使得代码得以运行,说法二又认为const不能用来定义一个数值来做数组的维度。
经过测试const来定义数组长度并没有报错,不由心生困惑,望贵刊能解答我。谢谢!
在翻阅的过程中发现问题如下:
说法一(第50页):
/*
例4.19 使用变量表示数组长度产生的错误
#include<stdio.h>
void main()
{
int i,max;
int ts=5;
int temp[ts]={20,12,40,31,25};
....
....
printf("数组temp的最大值为:%d\n",max);
}
上面的代码运行程序后,显示了错误信息,如图所示....
2.陷阱的分析
在进行数组定义时,数组的长度要使用常量或者符号常量,不可以使用变量。C语言不允许对数组的长度做动态的定义。
3.陷阱的解决方法
const int ts=5;
int temp[ts]={20,12,40,31,25};
*/
说法二(第73页):
倒数第10行
/*
const限定的对象通常是运行时不能被赋值的对象,因此用const限定的对象的值并不是一个真正的常量,不能用作数组维度等。
例如:
const int n=10;
int a[n];
根据上面的讲解可知道,上面这两行代码有问题,不能使用const定义的常量来做数组的维度。
*/
由此可见,前后两个说法是矛盾的。说法一认为可以通过在数据类型前面加上const来使得代码得以运行,说法二又认为const不能用来定义一个数值来做数组的维度。
经过测试const来定义数组长度并没有报错,不由心生困惑,望贵刊能解答我。谢谢!