在函数内修改形参,主函数内该字符数组也被修改的程序怎么写
时间: 2024-02-01 17:14:29 浏览: 28
可以使用指针来实现在函数内修改形参,使得主函数内的字符数组也被修改。具体实现步骤如下:
1. 在函数声明中,将字符数组的形参改为指向字符的指针类型。
2. 在函数内部,通过指针对字符数组进行修改。
3. 在主函数中,将字符数组的地址传递给函数作为实参。
4. 在主函数中,通过打印字符数组的方式来验证是否已经被修改。
下面是一个示例代码:
```c++
#include <iostream>
using namespace std;
void change(char *str) {
str[0] = 'H';
str[1] = 'e';
str[2] = 'l';
str[3] = 'l';
str[4] = 'o';
}
int main() {
char str[] = "World";
cout << "Before change: " << str << endl;
change(str);
cout << "After change: " << str << endl;
return 0;
}
```
输出结果为:
```
Before change: World
After change: Hello
```
可以看到,在函数内部修改了形参 `str` 所指向的字符数组,而这个修改也影响了主函数中的字符数组 `str`。
相关问题
在主函数中输入10个整数,调用函数sum求它们的和,结果在主函数中输出(要求:实参用数组 名,形参用指针变量)。 在主函数中输入一个字符串,调用converse函数将该字符串逆序,结果在主函数中输出。(要求 :实参用字符数组名,形参用指针变量)。
好的,这是两个比较简单的 C++ 编程问题。下面是代码实现:
1. 求整数数组的和
```c++
#include <iostream>
using namespace std;
int sum(int* ptr, int size) {
int result = 0;
for (int i = 0; i < size; i++) {
result += *(ptr + i);
}
return result;
}
int main() {
int nums[10];
for (int i = 0; i < 10; i++) {
cout << "请输入第 " << i+1 << " 个整数:";
cin >> nums[i];
}
int result = sum(nums, 10);
cout << "这 10 个整数的和为:" << result << endl;
return 0;
}
```
在上述代码中,我们定义了一个名为 `sum` 的函数,该函数接受两个参数:一个指针 `ptr` 和一个整数 `size`。指针 `ptr` 用于指向输入的整数数组,整数 `size` 用于指明数组的大小。在函数内部,我们使用指针运算符 `*` 访问数组中的元素,并累加它们的值,最后返回结果。
在 `main` 函数中,我们首先创建一个名为 `nums` 的整数数组,并使用 `for` 循环依次读入 10 个整数。然后,我们调用 `sum` 函数,将数组名 `nums` 和数组大小 `10` 作为参数传递给它。最后,我们将函数返回值输出到控制台。
2. 字符串逆序输出
```c++
#include <iostream>
#include <cstring>
using namespace std;
void converse(char* ptr) {
int len = strlen(ptr);
for (int i = 0; i < len / 2; i++) {
char temp = *(ptr + i);
*(ptr + i) = *(ptr + len - i - 1);
*(ptr + len - i - 1) = temp;
}
}
int main() {
char str[100];
cout << "请输入一个字符串:";
cin.getline(str, 100);
converse(str);
cout << "逆序后的字符串为:" << str << endl;
return 0;
}
```
在上述代码中,我们定义了一个名为 `converse` 的函数,该函数接受一个指针 `ptr` 作为参数。指针 `ptr` 用于指向输入的字符数组。在函数内部,我们首先计算出字符串的长度,然后使用指针运算符 `*` 访问字符数组中的元素,将前半部分和后半部分的字符交换位置,最后得到逆序的字符串。
在 `main` 函数中,我们首先创建一个名为 `str` 的字符数组,并使用 `cin.getline` 函数读入一个字符串。然后,我们调用 `converse` 函数,将字符数组名 `str` 作为参数传递给它。最后,我们将逆序后的字符串输出到控制台。
C语言定义字符串二维数组并将其作为形参传递给函数
可以使用以下方式定义字符串二维数组并将其作为形参传递给函数:
```c
#include <stdio.h>
void printStrings(char strings[][20], int n) {
for(int i=0; i<n; i++) {
printf("%s\n", strings[i]);
}
}
int main() {
char strings[][20] = {"Hello", "World", "How", "Are", "You"};
int n = sizeof(strings)/sizeof(strings[0]);
printStrings(strings, n);
return 0;
}
```
在上面的例子中,我们定义了一个名为 `strings` 的字符串二维数组,并将其初始化为一些字符串。我们还定义了一个名为 `printStrings` 的函数,它接受两个参数:一个字符串二维数组和一个整数,表示字符串数组的大小。在函数中,我们使用一个循环遍历字符串数组,并使用 `printf` 函数打印每个字符串。在主函数中,我们首先计算字符串数组的大小并将其传递给 `printStrings` 函数。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)