码迷,mamicode.com
首页 > 编程语言 > 详细

C++中函数处理数组的一点笔记

时间:2015-09-05 20:49:13      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

// pointDemo0905.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

//写法1
//int sum(int array[],int num);
//写法2
int sum(const int *array,int num);

void revalue(int r,int *array,int num);

int _tmain(int argc, _TCHAR* argv[])
{
int adata[8]={1,2,3,4,5,6,7,8};
revalue(2,adata,8);
int result=sum(adata,8);
return result;
}

//写法1,当且仅当用于函数头或函数原型时int array[]和int *array含义是相同的
//int sum(int array[],int num)
//{
// int total=0;
// for(int i=0;i<num;i++)
// total=total+array[i];
// return total;
//}

//写法2 两种写法函数执行效果是一样的
int sum(const int *array,int num)
{
int total=0;
for(int i=0;i<num;i++)
{
//*(array+i)=10*(*(array+i)); //由于函数头声明了const ,该语句会报错
total=total+ *(array+i);
}
return total;
}

//修改数组数据
void revalue(int r,int *array,int num)
{ //由于需要修改数组,因此这样声明 int *array,而不是const int *array
for(int i=0;i<num;i++)
*(array+i)=r*(*(array+i));

}

/**
1、C++中数组作为函数参数,是将数组首地址、类型、数目告知函数,而后函数对数组进行处理
2、为将数组地址和数目告知函数,请通过两个不同的参数传递
int sum(int *array,int num)或/int sum(int array[],int num)
而不用试图通过 sun(int array[size])的方式
3、使用普通参数时,由于C++按值传递,使用的是数据的副本,因此不会破坏(修改)数据,然而接受数组地址或指针的函数使用的是原始数据,直接访问了内存单元,是能够修改数据的。
4、如果需要避免函数无意中修改原始数据(在接受指针参数时),则可以在申明形参时使用关键字const
如int sum(const int array[],int num),const只是表示在sum函数内不能做诸如 array[0]++这样修改array[]的操作,并不是说在main中调用sum时的实参adata必须是常量,
常量是定义后永远不能修改直至程序退出内存销毁,此处只是在这样int sum(const int array[],int num)定义的sum函数执行中保证不修改adata数据。

自下而上的编程,从组件到整体运行,这种方法适合OOP编程,首先强调的是数据表示和操纵。


5、在C++中函数处理数组,必须将数组的类型、起始位置、数目提交给它,有两种方法
1)传统方法,fun(int *array,num)... 通过数组起始位置和数目就可以获得数组全部信息
2)指定元素区间的方法, fun(int *begin,int *end)... 通过这两个指针提供的信息也可实现对数组的全权操作

6、如果数据类型本身不是指针,则可以将const 或非const 类型的数据的地址赋给const 类型的指针,但只能将非constl类型的数据的地址赋给非const类型的指针。
如const int a=0;
int b;
const int *p; //只是说指针类型是常量
int *ptr;
p=&a; p=&b; ptr=&b; //valid
ptr=&a; //invalid


*/

C++中函数处理数组的一点笔记

标签:

原文地址:http://www.cnblogs.com/Tofinduntildied/p/4783812.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!