C/C++进阶[5]
来源:互联网 发布:三只松鼠 淘宝 京东 编辑:程序博客网 时间:2024/06/14 01:53
一个很有趣的应用
关键字:迭代问题、一维数组范围
比如有一个结构,它是这样定义的:
typedef struct MyStuc
{
int nID;
char *pszText;
} MyStuc;
那么MyStuc的一个实例可以是:
MyStuc mt[] = {
{0, "Text 1"},
{1, "Text 2"},
{2, "Text 3"}
};
这样的话我们很容易就能进行转化,并且能够保证结果是等效的:
MyStuc mt[3];
mt[0].nID = 0;
mt[0].pszText = "Text 1";
...
mt[2].pszText = "Text 2";
前一个mt定义的同时进行初始化,由编译器决定维数大小;而后一个则先定义后初始化,并且指定了维数大小。显然,它们的空间大小一样。但在迭代中,怎么应用呢?看下面的例子:
int nMax = sizeof(mt) / sizeof(mt[0]);
for (int i = 0; i < nMax ; ++i)
{
//do something
mt[i] ....
}
它的优点在于自动限制mt的下标范围。下标在int nMax = sizeof(mt) / sizeof(mt[0]);求出。这样做的好处是:无需干预整个数组的迭代,界限由程序算出。
而第二个例子:
int nMax = 3;
for (int i = 0; i < nMax; ++i)
{
//do something
mt[i]....
}
下标是一个常量,这是要程序员指定的,对于mt范围的改变需要外界的干预该迭代范围。该方式的好处是:可以灵活指定迭代的范围,可以是整个对象也可能是一部分。
- C/C++进阶[5]
- C/C++进阶[1]
- C/C++进阶[2]
- C/C++进阶[3]
- C/C++进阶[4]
- C语言进阶
- C语言进阶
- Linux C 进阶过程
- C++primer函数进阶
- C语言进阶
- C语言进阶3
- C语言学习进阶
- C语言进阶
- c编程进阶
- C语言程序设计进阶
- C基础知识进阶(上)
- C语言进阶
- c to c++进阶
- 林芝三日
- Servlet和JSP核心编程读后感二(第4章)
- 我最喜欢的 迈克·杰克逊 的经典之作,dangerous
- RT73 install failure
- 现实中~他们是战神~
- C/C++进阶[5]
- 第一次
- 如何在TORQUE里建造山洞-探讨篇(DIg a cave in Torque Game)
- MSDN将字节数组转换为十六进制值字符串时 Byte 的用法
- 再看数学——丘成桐:数学的内容、方法和意义
- 要出发了
- 好久不来了,想念!
- 敏捷开发学习笔记(一)
- htaccess 使用详解(转)