形参使用string数组
时间: 2023-09-04 18:06:38 浏览: 46
使用string数组作为函数的形参,可以方便地传递字符串数组,并且可以避免数组越界的问题。以下是一个示例函数,它接受一个字符串数组作为参数,并打印出数组中的所有字符串:
```cpp
#include <iostream>
#include <string>
using namespace std;
void printStrings(string arr[], int n) {
for(int i = 0; i < n; i++) {
cout << arr[i] << endl;
}
}
int main() {
string arr[] = {"hello", "world", "foo", "bar"};
int n = sizeof(arr) / sizeof(arr[0]);
printStrings(arr, n);
return 0;
}
```
在这个例子中,`printStrings`函数接受一个`string`类型的数组`arr`和数组的长度`n`作为参数。函数内部使用`for`循环遍历数组并打印出每个字符串。在`main`函数中,我们定义了一个字符串数组`arr`,并使用`sizeof`运算符计算出数组的长度。然后,我们将数组和数组长度传递给`printStrings`函数。
相关问题
在函数定义中形参使用指针数组char *s[]来表示形参,即char* change(char *s[])。而在函数调用中使用二维数组,即char poem[4][20]传入实参是否可行,如果不可行,为什么不行??
在函数定义中使用指针数组 char *s[] 来表示形参,是因为指针数组本身就是一个指向指针的指针,因此可以通过指针数组来访问原始的指针,进而访问数组中的数据。
而在函数调用中使用二维数组 char poem[4][20] 传入实参,实际上是将一个二维数组的首地址传递给了指针数组。由于二维数组的内存布局和指针数组是不同的,因此编译器可能会对二者进行不同的处理。因此,如果在函数定义中使用指针数组作为形参,那么最好也使用指针数组作为实参,这样可以确保程序的正确性。
也就是说,如果要将一个二维数组传递给一个使用指针数组作为形参的函数,需要先将二维数组转换为指针数组,然后再将指针数组作为实参传递给函数。例如,可以定义一个临时的指针数组,将二维数组的每一行的首地址赋值给指针数组的对应元素,然后将指针数组作为实参传递给函数。
修改后的代码如下所示:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* change(char *s[], int n);
int main(void)
{
char poem[4][20];
int n, i;
for (i = 0; i < 4; i++)
{
fgets(poem[i], sizeof(poem[i]), stdin);
}
char* ptr[4];
for (i = 0; i < 4; i++)
{
ptr[i] = poem[i];
}
char* result = change(ptr, 4);
for (i = 0; result[i] != '\0'; i++)
{
printf("%c", result[i]);
}
return 0;
}
char* change(char *s[], int n)
{
char* a = NULL;
a = (char*)malloc(sizeof(char) * 10);
int i;
for (i = 0; i < n; i++)
{
a[2 * i] = s[i][0];
a[2 * i + 1] = s[i][1];
}
a[2 * i] = '\0';
return a;
}
```
修改后的代码中,先定义一个指针数组 ptr,将二维数组 poem 的每一行的首地址赋值给 ptr 的对应元素。然后将 ptr 作为实参传递给函数 change(),确保程序的正确性。
java类数组做形参
Java 中,类数组可以作为方法的形参。类数组是一种特殊的数组,它不是由具体的类型和长度定义的,而是由一个类和长度(或者说是数量)定义的。比如说,String[]、Object[] 等都是类数组。
当我们需要在方法中处理多个相同类型的数据时,可以使用类数组作为形参,从而避免在方法中定义多个参数的麻烦。具体的使用方法如下:
```java
public void processArray(String[] arr) {
// 对数组进行处理
}
```
在上面的示例中,processArray() 方法的形参是一个 String 类型的类数组,可以接收任意长度的字符串数组作为参数。在方法中,我们可以对该数组进行任意操作。