Chinaunix首页 | 论坛 | 博客
  • 博客访问: 119616
  • 博文数量: 29
  • 博客积分: 1215
  • 博客等级: 中尉
  • 技术积分: 305
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-05 16:29
文章分类
文章存档

2010年(29)

我的朋友

分类: C/C++

2010-12-13 19:06:26

预备知识:
    任何处理数组的程序都要确保程序停留在数组的边界内。

    以下通过一个简单程序介绍三种常见的编程技巧确保函数的操作不超出数组实参的边界。

程序清单:

#include <iostream>

using namespace std;

/*方法1:在数组本身放置一个标记来检测数组的结束。比如C风格字符串,它
         是一种字符数组,并且以null作为结束的标记*/


/*方法2:传递指向数组第一个和最后一个元素的下一个位置的指针*/
//void printValues(const int *beg,const int *end)

//{

// while(beg != end)

// {

// cout << *beg++ << endl;

// }

//}


/*方法3:显式传递表示数组大小的形参*/
void printValues(const int ia[],size_t size)
{
    for(size_t i = 0; i != size; ++i)
    {
        cout << ia[i] <<endl;    
    }    
}

int main(int argc,char *argv[])
{
    int array[2] = {0,1};
    
// printValues(array,array+2); //方法2

   printValues(array,sizeof(array)/sizeof(*array)); //方法3

    return 0;
}

obe-240 eagle/test> g++ -o print_array2 print_array2.cpp
obe-240 eagle/test> ./print_array2
0
1
阅读(1979) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~