用指针传递参数,实现两个字符串的对换,c语言
时间: 2024-05-05 15:19:52 浏览: 19
可以使用指针来交换两个字符串,具体实现如下:
```c
#include <stdio.h>
void swap(char **str1, char **str2) {
char *temp = *str1;
*str1 = *str2;
*str2 = temp;
}
int main() {
char *str1 = "Hello";
char *str2 = "World";
printf("Before swap: str1=%s, str2=%s\n", str1, str2);
swap(&str1, &str2);
printf("After swap: str1=%s, str2=%s\n", str1, str2);
return 0;
}
```
在 `swap` 函数中,我们使用了两个指向指针的指针,这样可以直接修改指针的值,实现字符串的交换。在 `main` 函数中,我们首先定义了两个字符串指针,然后调用 `swap` 函数交换两个字符串,最后输出交换后的结果。
相关问题
用c语言实现用指针传递参数,实现两个字符串的互换
可以使用指针传递参数来实现两个字符串的互换。以下是一个用C语言实现的示例代码:
```c
#include <stdio.h>
#include <string.h>
void swap(char **str1, char **str2) {
char *temp = *str1;
*str1 = *str2;
*str2 = temp;
}
int main() {
char str1[] = "Hello";
char str2[] = "World";
printf("Before swap:\n");
printf("str1: %s\n", str1);
printf("str2: %s\n", str2);
swap(&str1, &str2);
printf("After swap:\n");
printf("str1: %s\n", str1);
printf("str2: %s\n", str2);
return 0;
}
```
在这个示例代码中,我们定义了一个名为 `swap` 的函数,它使用了指针传递参数来交换两个字符串。该函数使用了一个 `char **` 类型的指针,这是因为我们需要传递两个字符串的指针,而每个字符串本身也是一个指针。
在 `main` 函数中,我们声明了两个字符串 `str1` 和 `str2`,并将它们传递给 `swap` 函数。在 `swap` 函数中,我们使用了一个 `temp` 变量来保存 `str1` 的值,然后将 `str1` 的指针指向 `str2`,将 `str2` 的指针指向 `temp`,从而实现了两个字符串的互换。
最后,我们在 `main` 函数中输出交换后的字符串,以验证函数是否正确工作。
用指针实现两个字符串的交叉c语言
以下是用指针实现两个字符串的交叉的C语言代码:
```c
#include <stdio.h>
#include <string.h>
void swap(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
void reverse(char *s) {
int len = strlen(s);
char *p = s;
char *q = s + len - 1;
while (q > p) {
swap(p, q);
p++;
q--; }
}
void cross(char *s1, char *s2) {
int len1 = strlen(s1);
int len2 = strlen(s2);
int len = len1 > len2 ? len1 : len2;
char *p1 = s1;
char *p2 = s2;
char temp[len];
int i = 0;
while (*p1 || *p2) {
if (*p1) {
temp[i++] = *p1;
p1++;
}
if (*p2) {
temp[i++] = *p2;
p2++;
}
}
temp[i] = '\0';
strcpy(s1, temp);
reverse(s2);
}
int main() {
char s1[100], s2[100];
printf("请输入第一个字符串:");
scanf("%s", s1);
printf("请输入第二个字符串:");
scanf("%s", s2);
cross(s1, s2);
printf("交叉后的第一个字符串为:%s\n", s1);
printf("交叉后的第二个字符串为:%s\n", s2);
return 0;
}
```