Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么一个字符串变量不能分配给C中的另一个字符串变量?_C_String_Pointers - Fatal编程技术网

为什么一个字符串变量不能分配给C中的另一个字符串变量?

为什么一个字符串变量不能分配给C中的另一个字符串变量?,c,string,pointers,C,String,Pointers,为什么在下面编写的代码中,我们不能将strA赋值给strB,而指针pA持有指针pB的地址,那么在pA赋值给pB时,地址应该被复制,而strB应该包含与strB相同的值 #include <stdio.h> char strA[80] = "A string to be used for demonstration purposes"; char strB[80]; int main(void) { char *pA; /* a pointer to type characte

为什么在下面编写的代码中,我们不能将
strA
赋值给
strB
,而指针
pA
持有指针
pB
的地址,那么在
pA
赋值给
pB
时,地址应该被复制,而
strB
应该包含与
strB
相同的值

#include <stdio.h>
char strA[80] = "A string to be used for demonstration purposes";
char strB[80];
int main(void)
{
    char *pA; /* a pointer to type character */
    char *pB; /* another pointer to type character */
    puts(strA); /* show string A */
    pA = strA; /* point pA at string A */
    puts(pA); /* show what pA is pointing to */
    pB = strB; /* point pB at string B */
    putchar('\n'); /* move down one line on the screen */
    pB=pA;
    strB=strA;
    puts(strB); /* show strB on screen */
    puts(strA);

    return 0;
}
#包括
char strA[80]=“用于演示目的的字符串”;
char-strB[80];
内部主(空)
{
char*pA;/*指向类型字符的指针*/
char*pB;/*指向类型character的另一个指针*/
puts(strA);/*显示字符串A*/
pA=strA;/*点pA在管柱A处*/
放置(pA);/*显示pA指向的内容*/
pB=strB;/*字符串B处的点pB*/
putchar('\n');/*在屏幕上向下移动一行*/
pB=pA;
strB=strA;
放置(strB);/*在屏幕上显示strB*/
看跌期权(strA);
返回0;
}

不能在C中分配数组(
strB=strA
)。必须使用strcpy或memcpy将一个数组/指针的内容传输到一个数组。

不能在C中分配数组(
strB=strA
)。必须使用strcpy或memcpy将一个数组/指针的内容传输到一个数组。

写入时:

char-strB[80]

strB不是指针,而是常量指针。这意味着您不能更改strB指向的地址,因此

strB=strA

不会做任何事。

当你写:

char-strB[80]

strB不是指针,而是常量指针。这意味着您不能更改strB指向的地址,因此

strB=strA


不会做任何事情。

将标签从C++改为C,因为看起来你是在专门问C问题。这是不是?“代码> > STRA 和<代码> STRB<代码>不是字符串变量。C中没有
字符串变量
,它们是数组。一个数组不能被分配给另一个数组。你的问题是FAQ,投票关闭。把标签从C++改为C,因为你似乎特别问C问题。这是不是?代码< > STRA 和<代码> STRB<代码>不是字符串变量。C中没有
字符串变量
,它们是数组。无法将一个数组分配给另一个数组。您的问题是常见问题解答,投票关闭。