C++常用的函参类型解析
来源:互联网 发布:网络布线按米收费吗 编辑:程序博客网 时间:2024/05/16 08:26
在编写C ++代码时,经常会使用不同的参数类型作为函数的参数来传递信息。本文主要讨论int型,string型,以及整型数组、字符串型数组作为函数的参数时,需要注意的问题。其中可能会有很些细节笔者在文中并为涉及,还请读者改正及完善。(本文并未讨论传值与传引用的区别,因为这部分内容不容易理解,笔者在后面会单独进行讲解)
函数参数为int型。这是最简单也是最容易理解的一种参数类型。下面看一个简单的程序:
程序中,通过函数参数的形式,将a,b的值传递给函数Add。
函数参数为string型。当函数参数为string型时,需要注意形参与实参的表示形式。下面看一段简单的代码:
void ShowString(string const &str)
{
cout<<str<<endl;
}
void main()
{
string str;
printf("请输入要显示的字符串:");
getline(cin, str);
ShowString(str);
return;
}
在C++中,string表示一种库类型,表示可变长字符序列。因为string可视为指针,那么,如果指针作为参数,则传递的参数只能按引用传递。所以,如果将代码改为 void ShowString (string const str),则会出错。
函数参数为整型数组或字符串型数组。当函数参数为数组时,需要注意形参中的数组名相当与数组的首地址。下面看一段代码:
void Update_SMIL(string const &program_name , string const src[] , string const bit[] , int n)
{
ofstream ReadInFile;
ReadInFile.open("SMIL.txt",ios::trunc); ////ios::trunc表示在打开文件前将文件清空,由于是写入,文件不存在则创建
if(ReadInFile.is_open())
{
ReadInFile<<"<?xml version=\"1.0\"?>\n"<<"<!DOCTYPE smil PUBLIC \"-//W3C//DTD SMIL 2.0//EN\"\n";
ReadInFile<<"\"http://www.w3.org/TR/html4/loose.dtd\">\n"<<"<smil xmlns=\"http://www.w3.org/2001/SMIL20/Language\">\n";
ReadInFile<<" "<<"<head>\n"<<" "<<"<meta name=\"category\" content="<<"\""<<program_name<<"\""<<"/>""\n";
ReadInFile<<" "<<"<meta name=\"httpBase\" content=\"http://hkjc-f.akamaihd.net/\"/>\n";
ReadInFile<<" "<<"<meta name=\"rtmpAuthBase\" content=\"hdflash_base_url\"/>\n";
ReadInFile<<" "<<"<meta name=\"vod\" content=\"true\"/>""\n";
ReadInFile<<" "<<"</head>\n";
ReadInFile<<" "<<"<body>\n";
ReadInFile<<" "<<"<switch id="<<"\""<<program_name<<"\""<<">\n";
for(int i = 0; i < n; i++)
{
ReadInFile<<" "<<"<video\n";
ReadInFile<<"src="<<"\""<<src[i]<<"\""<<" "<<"system-bitrate="<<"\""<<bit[i]<<"\""<<"/>\n";
}
ReadInFile<<" "<<"</switch>\n";
ReadInFile<<" "<<"</body>\n";
ReadInFile<<"</smil>\n";
}
ReadInFile.close();
return;
}
void main()
{
string program_name;
int n;
printf("请输入program_name:");
getline(cin,program_name);
string src[5] = {"abc", "bcd", "adf", "sfsd"};
string bit[5] = {"2213214", "324425", "32415", "452345"};
printf("请输入video的个数:");
scanf_s("%d", &n);
Update_SMIL(program_name, src, bit, n);
return;
}
上面这段代码中,src和bit为字符串型数组,在使用数组作为函数参数的时候,可以借鉴上述代码中的形式。数组有两个特殊的性质:不允许拷贝数组以及使用数组时会将其转换成指针。因为不能拷贝数组,所以我们无法以值传递的方式使用数组形参。因为数组会被转换成指针,所以当我们为函数传递一个数组时,实际上传递的是指向数组首元素的指针。
尽管不能以值传递的方式传递数组,但是我们可以把形参写成类似数组的形式,以下三种表示方式都是等价的:
void print(const int*);
void print(const int[]);
void print(const int[10]); //这里的维度可以表示我们期望数组含有多少元素
以上三个函数是等价的,每个函数的唯一形参都是const int*类型的。
- C++常用的函参类型解析
- C语言的指针类型解析
- C语言的常用类型转换函数
- 数据库基本常用类型解析
- Ajax常用参数类型解析
- C 常用函数解析
- c中的数组名的指针类型解析
- JSON解析,类型是{"a":"b","c":"d"}的
- c语言解析类似json类型的字符串
- c#——常用的基本数类型
- C语言基础1:几个常用关键字的解析
- Android类库常用类型解析
- Android类库常用类型解析
- Android类库常用类型解析
- android类库常用类型解析:
- Android类库常用类型解析
- Android类库常用类型解析
- Android类库常用类型解析
- hdu3664(递推)
- OpenWrt C/C++ Development with Eclipse(Eclipse下的Openwrt开发)
- splay复习小记
- 有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转
- PHP版本高于5.5时,curl文件上传必须使用CurlFile对象
- C++常用的函参类型解析
- 《广播电视安全播出事件/事故管理规定》
- 触摸屏通讯口(USB、RS232、RS422/485)的正确使用
- mybatis 多参数模糊查询sql
- PCI Local BUS 3.0
- 【View】isShown ()的用法
- GIT工具流程理解及使用说明
- java 调用 .net webservice 示例
- 获取ItemsControl里面的控件