cpp(1)字符串数组函数

//1.指针:是一种数据类型,用于存放某个变量的地址值。此时该指针被称为是指向该变量。
//一个指针的类型决定于它所指向的变量的类型。
//指针既可以指向基本数据类型,又可以指向数组,函数,类,和文件等用户自定义数据类型
//指针可以初始化为0,NULL,或一个地址,内容为0或NULL的指针不指向任何变量,称为空指针
//2.数组的指针:数组名是一个指向该数组的常量指针(其值不能改变),也是该数组中首单元的
//地址值
//3.字符串与字符数组:字符串一般使用指针(包括变量指针和常量指针两种方式)表示其地址
//和内容,此地址也是其第一个字符的地址。
/*  第一种为变量指针方式EG: char *ch_ptr="home";(ch_ptr为变量指针)。
    第二种为常量指针方式EG: char  ch_arr[5]="OK";(ch_arr为常量指针)。此处字符数组名
是一个指向该数组的常量指针,它不能重新赋值。


//指针数组和数组指针:




------------------------------------------------------


//两种指针方式及其地址和字符串内容
#include<iostream.h>
#include<iomanip.h>
void main()
{
char *nm="Nice"; //变量指针
char name[]="OK"; //常量指针
cout<<"Addresses of the pointers 'nm' and 'name' themselves:"<<endl;
cout<<"'nm' is at "<<&nm<<",'name'is at "<<&name<<endl;
cout<<hex<<setiosflags(ios::uppercase)<<"'nm' points to 0x"<<(int)nm;
cout<<",'name' points to 0x"<<(int)name<<endl;
cout<<"Character string are '"<<nm<<"' and '";
cout<<name<<"'respectively."<<endl;
}


---------------------------------------------------------------


//指针数组
//使用一维一级字符指针数组来存放一星期中的各天
//show the function of a character array
#include <iostream.h>
char *name[]={"Monday","Tuesday","Wednesday",
"Thursday","Friday","Saturday","Sunday"};
void main()
{
int week;
while(1)
{
cout<<"Input sequential number:";
cin>>week;
if(week<1||week>7) break;
cout<<"This is "<<name[week-1]<<endl;
//指针数组第一个单元的序号为0,而用户输入的week值
//却从1开始,所以week应减1
}
cout<<"Program ended!"<<endl;
}
//使用指针数组显示数组中不同单元的字符串,
-==============================================================


函数(function)函数定义和函数原型(函数说明)


函数的定义格式如下:


<返回值> <函数名><(参数表)>
{
<函数体>
}
其中第一行也称函数头或首部(function header)
<返回值>也称<类型说明符>,也即,函数的返回值也代表函数的类型,如无返回值,则使用void表示。
//各C++系统对函数返回值都有自己规定的缺省值,vc++中函数返回值的缺省值是int
即返回整型值


函数原型的格式如下:
<返回值><函数名><(参数表)>; //可以看出:函数原型的格式是函数头加分号。


函数原型有两个重要意义:1>在函数使用前便于对函数进行参数类型检查。
2>参数的强制类型转换




函数指针与指针数组
//函数既然有地址,就可以具有指针
#include<iostream.h>
void fun();
void main()
{
void (*ptr)()=fun; //ptr即函数指针,指向函数fun


ptr();
}
void fun()
{
cout<<"fun() is called!"<<endl;
}
----------------------------------------------------------------------
指针数组:前面演示使用指针数组显示数组中不同单元的字符串,现在可以借鉴,使用函数指针数组来调用不同函数。


//函数指针数组
#include<iostream.h>
void f();
void g();
void h();
void main()
{
void (*ptr[])()={f,g,h}; //ptr[]即函数指针数组
//其各单元分别指向f,g,h
ptr[0](); //分别调用个单元所指向的各函数
ptr[1]();
ptr[2]();


}


void f()
{
cout<<"f()called"<<endl;
}
void g()
{
cout<<"g()called"<<endl;
}
void h()
{
cout<<"h()called"<<endl;
}
//ptr[]是指针数组,他的所有单元都是各函数的地址,因此可以
//通过访问格单元而获得各函数的地址,最后调用各函数。
-----------------------------------------------------------


//一个接近实用的函数指针数组


#include<iostream.h>


void disp_act(int num);
void act_water();
void act_vent();
void act_lubricat();


void(*action[])()={act_water,act_vent,act_lubricat};
//action 即函数指针数组,其各单元(指针)分别指向
//三个函数act_water(),act_vent(),和act_lubricat()


char *err_msg[]={"No cooling water!","No ventilation!",
"No lubrication!"};
void main()
{
int flag=-1;
disp_act(-flag);
flag=-2;
disp_act(-flag);
flag=-3;
disp_act(-flag);


}
void act_water()
{
cout<<"to open water valve!"<<endl;
}


void act_vent()
{
cout<<"to switch on ventilation fan!"<<endl;
}


void act_lubricat()
{
cout<<"to start lubrication pump!"<<endl;
}


void disp_act(int num)
{
cout<<err_msg[num-1];
action[num-1]();
//调用相关单元(指针)所指向的函数以采取动作
}


//上例中void (*action[])()定义action为函数指针数组,它的所有单元都是各函数
的地址,因此可以通过访问各单元而获得各函数的地址,最后调用个函数。
必须指出,所有函数必须完全相同。也即,所有函数的返回值和形参列表都应完全相同。
===================================================================
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好,以下是用 C++ 编写一个输入字符串数组函数示例: ```cpp #include <iostream> #include <string> using namespace std; void inputStringArray(string arr[], int size) { for (int i = ; i < size; i++) { cout << "请输入第" << i + 1 << "个字符串:"; getline(cin, arr[i]); } } int main() { const int SIZE = 3; string arr[SIZE]; inputStringArray(arr, SIZE); for (int i = ; i < SIZE; i++) { cout << "第" << i + 1 << "个字符串是:" << arr[i] << endl; } return ; } ``` 这个函数的作用是输入一个字符串数组,其中 `arr` 是字符串数组,`size` 是数组的大小。函数使用 `getline` 函数从标准输入中读取每个字符串,并将其存储在数组中。在主函数中,我们可以使用这个函数来输入一个字符串数组,并输出每个字符串。 ### 回答2: 要用C++写一个函数来输入字符串数组,可以使用以下代码: ```cpp #include <iostream> #include <string> #include <vector> std::vector<std::string> inputStringArray() { std::vector<std::string> strArray; int numStrings; std::cout << "请输入字符串的数量:"; std::cin >> numStrings; for (int i = 0; i < numStrings; i++) { std::string str; std::cout << "请输入第 " << (i + 1) << " 个字符串:"; std::cin >> str; strArray.push_back(str); } return strArray; } int main() { std::vector<std::string> array = inputStringArray(); std::cout << "输入的字符串数组为:" << std::endl; for (const std::string& str : array) { std::cout << str << std::endl; } return 0; } ``` 这个函数使用了一个字符串数组来存储用户输入的字符串,使用了`std::vector`容器来实现。首先,用户需要输入字符串的数量。然后,在一个循环中,用户依次输入每个字符串,然后将其添加到字符串数组中。最后,函数返回这个字符串数组。 在主函数中,我们调用了`inputStringArray()`函数来获取用户输入的字符串数组,并打印出这个数组中的所有字符串。 ### 回答3: 要用C++语言编写一个函数来输入字符串数组,可以按照以下步骤进行操作: 1.首先,在函数的参数中传入一个字符串数组,用来保存输入的字符串。 2.然后,在函数内部使用循环来逐个输入字符串。可以使用一个计数器来记录当前输入了多少个字符串。 3.在循环内部,使用C++中的输入流对象std::cin来输入字符串,并将其保存到字符串数组中。可以使用数组的索引来确定保存的位置,例如:array[counter] = inputString;(其中,array是传入的字符串数组,counter是计数器变量,inputString是存储输入的字符串的变量)。 4.每次循环结束后,计数器要自增1,以便记录下一个字符串的位置。 5.在循环结束后,返回字符串数组。可以使用C++中的指针来实现这一操作,即return array;。 下面是一个示例代码,用于说明如何实现上述功能: ```cpp #include <iostream> #include <string> // 函数名为inputStrings,参数为字符串数组 std::string* inputStrings(std::string array[], int size) { int counter = 0; // 计数器 while (counter < size) { std::string inputString; // 用于保存输入的字符串 std::cout << "请输入第" << counter + 1 << "个字符串:"; std::cin >> inputString; array[counter] = inputString; counter++; // 计数器自增1 } return array; } int main() { const int size = 5; // 字符串数组的大小 std::string strings[size]; // 声明一个字符串数组 // 调用inputStrings函数,将输入的字符串保存到数组中 inputStrings(strings, size); // 打印输入的字符串数组 std::cout << "输入的字符串为:"; for (int i = 0; i < size; i++) { std::cout << strings[i] << " "; } std::cout << std::endl; return 0; } ``` 这样,当运行上面的代码时,程序会提示用户输入5个字符串,并将这些字符串保存到名为`strings`的字符串数组中。然后,程序会打印出输入的字符串数组

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值