函数形参输入数组为什么用指针
时间: 2024-05-21 17:14:14 浏览: 82
函数形参输入数组为什么要使用指针的原因是,数组在内存中是连续存储的一块数据区域,使用指针可以避免对数组进行复制操作,提高程序的运行效率。同时,使用指针还可以进行指针运算操作,方便对数组的元素进行访问、修改等操作。此外,使用指针还可以避免因数组大小限制而带来的一些问题。因此,指针是处理数组数据时的一种重要的数据类型。
相关问题
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度(第8章第6题) 分别用以下两种情况处理: (1) 函数形参用(2) 函数形参用数组名指针变量
函数形参用指针:
```c++
#include <iostream>
using namespace std;
int strLength(char* str) {
int length = 0;
while (*str != '\0') {
length++;
str++;
}
return length;
}
int main() {
char str[100];
cout << "请输入一个字符串:" << endl;
cin.getline(str, 100);
cout << "该字符串的长度为:" << strLength(str) << endl;
return 0;
}
```
函数形参用数组名指针变量:
```c++
#include <iostream>
using namespace std;
int strLength(char str[]) {
int length = 0;
while (str[length] != '\0') {
length++;
}
return length;
}
int main() {
char str[100];
cout << "请输入一个字符串:" << endl;
cin.getline(str, 100);
cout << "该字符串的长度为:" << strLength(str) << endl;
return 0;
}
```
2. 编写一个程序,其中用户自定义函数strcompare函数实现两个字符串s1,s2的比较,函数原型声明为:int strcompare( char *str1 , char *str2 ) ; 分别有如下要求: (1)调用函数时实参用数组名,函数形参用指针变量。 (2)调用函数时实参和函数形参都用指针变量。 (3)调用函数时实参用指针变量,函数形参用数组名。
方案1:
```c
#include <stdio.h>
#include <string.h>
int strcompare(char *str1, char *str2);
int main() {
char s1[100], s2[100];
printf("请输入两个字符串:\n");
scanf("%s%s", s1, s2);
int result = strcompare(s1, s2);
if(result > 0) {
printf("字符串%s大于字符串%s\n", s1, s2);
} else if(result < 0) {
printf("字符串%s小于字符串%s\n", s1, s2);
} else {
printf("字符串%s等于字符串%s\n", s1, s2);
}
return 0;
}
int strcompare(char *str1, char *str2) {
return strcmp(str1, str2);
}
```
方案2:
```c
#include <stdio.h>
#include <string.h>
int strcompare(char *str1, char *str2);
int main() {
char s1[100], s2[100];
printf("请输入两个字符串:\n");
scanf("%s%s", s1, s2);
int result = strcompare(s1, s2);
if(result > 0) {
printf("字符串%s大于字符串%s\n", s1, s2);
} else if(result < 0) {
printf("字符串%s小于字符串%s\n", s1, s2);
} else {
printf("字符串%s等于字符串%s\n", s1, s2);
}
return 0;
}
int strcompare(char *str1, char *str2) {
int i = 0;
while(str1[i] && str2[i] && str1[i] == str2[i]) {
i++;
}
return str1[i] - str2[i];
}
```
方案3:
```c
#include <stdio.h>
#include <string.h>
int strcompare(char str1[], char str2[]);
int main() {
char s1[100], s2[100];
printf("请输入两个字符串:\n");
scanf("%s%s", s1, s2);
int result = strcompare(s1, s2);
if(result > 0) {
printf("字符串%s大于字符串%s\n", s1, s2);
} else if(result < 0) {
printf("字符串%s小于字符串%s\n", s1, s2);
} else {
printf("字符串%s等于字符串%s\n", s1, s2);
}
return 0;
}
int strcompare(char str1[], char str2[]) {
int i = 0;
while(str1[i] && str2[i] && str1[i] == str2[i]) {
i++;
}
return str1[i] - str2[i];
}
```
阅读全文