#include <stdio.h>
void main(){
char swap(char *a,char *b);
char str[3][20];
int i;
char (*p)[20];
printf("输入三个字符串 \n");
for(i=0;i<3;i++){
gets(str[i]);
}
p = str;
if(strcmp(str[0],str[1])) swap(p,p+1);
if(strcmp(str[0],str[2])) swap(p,p+2);
if(strcmp(str[1],str[2])) swap(p+1,p+2);
for(i=0;i<3;i++){
printf("%s\n",str[i]);
}
}
char swap(char *a,char *b){
char *temp;
temp = *a;
*a = *b;
*b = temp;
}
我想把p作参数传进swap函数里,我知道要改变指针的值才可以。
但是我这里应该怎么弄,我在函数外部调试的时候,*p就刚好是字符串的起始地址,但是我把p传进函数,*a就变成了字符串第一个字母。
该怎么弄才能达到我想要的效果?
我如果把函数写成
char swap(char (*a)[20],char (*b)[20]){
char *temp;
temp = *a;
*a = *b;
*b = temp;
}
就不能通过编译了
提示说
error C2106: '=' : left operand must be l-value;
如果不加*a的话,能通过编译,但是又不是值修改,达不到效果,该怎么办?
C语言字符串的学习,输入指定字符串,并且计算字符串的位数