字符数组名能不能当指针来用

来源:百度知道 编辑:UC知道 时间:2024/05/23 10:48:01
字符数组名能不能当指针来用
#include<stdio.h>

void main()
{
int i=0;
char a[20]={"wangyuqing"};
char b[20]={"liuqihong"};
while((*a++=*b++)!='\0');/*这里用字符数组名来当指针用为什么不行*/

printf("%s",a);
}
error C2105: '++' needs l-value
error C2105: '++' needs l-value
执行 cl.exe 时出错.
但是我下面的程序用调用函数的形式却行
#include<stdio.h>
void scpy();
main()
{
int i=0;
char a[20]={"wangyuqing"};
char b[20]={"liuqihong"};
scpy(a,b);
}
void scpy(char a[],char b[]) /*这里不也是定义字符数组来接收的吗
{int i;
while((*a++=*b++)!='\0');
a=a-10;
for(i=0;i<11;i++)
printf("%c",*(a+i));
}

在做为函数形参的时候,数组名跟指针式相同的
所以void scpy(char a[],char b[])
=void scpy(char* a,char* b)

因为数组名本来就是指针的一种呀!就不可以加*号拉!你先申请俩个指针变量,*p,*q;p=a;q=b;

这样就可以用拉!
printf("%s",a);你这样做的话,只是输出它的地址(error C2105: '++' needs l-value )
, 在输出之前printf("%s",a[i])外加一个循环就可以拉printf("%s",a[i]);