c语言中将一个数组的值赋给另外一个数组,好像要用指针来赋值

这两都不是字符型数组

错误的,不能用赋值语句将一个字符串常量直接给一个字符数组赋值。

chars[20];

charss[]="hello";

s=ss;错误原因是:是您不能使用赋值语句将一个字符数组直接赋值给一个字符串数组,也就是说,必须使用strcpy()函数来实现一个字符串的副本(在c语言中,但是在c++的string类中,上面的赋值是正确的)。

因为赋值字符“=”右边的表达式也可以是赋值表达式,下面的形式变量是=(变量=表达式);这是真的,所以它是嵌套的。展开后的一般形式为:variable=variable=…=表达式;例如:a=b=c=d=e=5;根据赋值运算符的正确啮合,其有效等价为:e=5;D=e;C=d.B=C.A=B;

Chara[]="toyou";正确的理由:因为当你声明一个数组变量时,你只是为它腾出空间并初始化它,这是c语法。

扩展资料:

C语言中字符串赋值的理解

一、指针式赋值

上面的例子很明显,也很容易理解。但是下面的方法有点难以理解。

通过程序的运行,我们可以知道:char*p="hello";这个字符串赋值非常好。为了理解这个赋值,我们首先需要理解双引号在这个语句中的作用(注意:这是双引号,不要使用单引号)。双引号有三个主要作用:

(1)申请了空间(在常量区),存放了字符串。

(2)在字符串尾加上了“\0”。

(3)返回地址。

这里所返回的地址就赋值给了char*类型的指针变量p。

二、通过字符数组直接把字符串赋值。程序如下:

三、需要注意的一些问题

直接把字符串赋值给数组名(也就是数组首元素的首地址)是不行的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-05
把一个数组的全部元素赋给另一个元素,如果是字符数组,用strcpy或strncpy,如果是非字符型数组,可以用memcpy函数
void * memcpy ( void * destination, const void * source, size_t num );

也可以用for loop
int i;
int n = sizeof(a)/sizeof(a[0]);
for(i=0; i<n; i++){
a[i] = b[i];
}

如果必须用指针可以这样
int i = 0;
int n = sizeof(a)/sizeof(a[0]);
while(i < n){
*p1++ = *p2++;
i++;
}
第2个回答  推荐于2017-10-06
//用不用都可以。
#include "stdio.h"
void main()
{
int a[]={0,1,2,3,4,5,6,7,8,9},b[10],c[10];
int i,*p=a;
for(i=0;i<10;i++)
b[i]=a[i]; //不用指针赋值。
for(i=0;i<10;i++)
c[i]=*(p+i); //用指针赋值。
for(i=0;i<10;i++)
printf("%d ",b[i]);
printf("\n");
for(i=0;i<10;i++)
printf("%d ",c[i]);
printf("\n");

}本回答被提问者采纳
第3个回答  2011-08-05
这要看情况
相似回答