C/C++进阶[5]

原创 2006年06月20日 01:17:00

一个很有趣的应用

关键字:迭代问题、一维数组范围

比如有一个结构,它是这样定义的:

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++ builder 入门与进阶.part5-of-7

  • 2012年04月01日 19:54
  • 2.86MB
  • 下载

Linux C C++入门与进阶.pdf

  • 2015年03月03日 19:25
  • 40.95MB
  • 下载

[程序猿初养成]Coursera-C程序设计进阶-第二周作业-编程题#5

编程题#5:细菌实验分组 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 有一种细菌分为A、B两个亚种,它们的外在特征几乎完全相同,仅仅在繁殖能力上有显...

C/C++进阶与高效代码要看的书.zip

  • 2013年11月16日 10:43
  • 96.97MB
  • 下载

C程序设计进阶week5(指针2注意)

数组中的指针 基本知识: 注意b,pb,c,pc,b和pb是地址,c和pc打印出来是内容,因为是字符数组 这段,加上那一段就打印地址了 定义指针后可以直接把字符串赋给pc,但这样就不能用p...

C++入门进阶之5: 继承与派生

C++入门进阶之5: 继承与派生 分类: C/C++2012-09-23 22:2597人阅读评论(0)收藏举报 1. 一个派生类可以同时拥有多个基类,这种情况被称为多继承。 ...

c/c++进阶之爱恨交织的临时对象: 二、天使与魔鬼

c/c++语言最让人称道的便是性能了,在大气科学、地球物理等等需要高性能计算方面c/c++语言都是不二之选。甚至在分布式领域,由于ssd固态硬盘和万兆网络的兴起,当IO不再成为分布式系统的瓶颈,CPU...
  • dhz625
  • dhz625
  • 2017年04月21日 10:18
  • 158

公司中 C和C++程序员进阶之路

从一次考试说起。 2010年10月份,综合部邀请我给新入职3个月的员工草拟考试试题,这些同事大部分在公司做的实习,算起来至少也有5、6个月的工作经验了吧。 试题的内容,是针对日常需要面对的...
  • glx2012
  • glx2012
  • 2013年04月18日 22:54
  • 1343

C/C++进阶学习笔记(三) 异常处理 try catch throw

本节介绍C++里面的异常处理

lua学习笔记之二(C/C++程序员的Lua快速入门[进阶话题])

进阶话题 1.函数闭包 1.1 实例代码 function createCountdownTimer(second) local ms = second * 1000 --ms为co...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C/C++进阶[5]
举报原因:
原因补充:

(最多只允许输入30个字)