#include<stdio.h>cpystr(char *p1,char *p2){while(*p2++=*p1++);}main(){char *q1="china",b[20],*q2;q2=b;cpystr(q1,q2);printf("%s %s",q1,b);}是printf(“%s %s",q1,q2)
你这个参数用的都是地址(指针)在传值,当然可以。首先p2指的是b[]的首地址,然后传入的两个参数都是指针,指向的是地址,最后将p1指向的地址里的值依次赋给p2指向的地址里的值,所以最终b[]就有了新值china;你看看这个,获取可以帮你理解这个问题:#include "stdio.h"void cpystr(char p1,char p2){char t;t=p1;p1=p2;p2=t;//交换之后,p1=e,p2=c;按理说此时b=c,q1=e;但是事实是他们没有交换值}void main(){ char q1='c',b='e',q2; cpystr(q1,b); q2=b; printf("%c %c",q1,q2);//此时,q1=c,q2=b=e;}