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

时间:2012-02-23 11:53:55

标签: c string pointers

为什么在下面编写的代码中我们无法将strA分配给strB,而指针pA保存指针pB的地址,那么地址应该在赋值时被复制pApBstrB应包含与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;
}

2 个答案:

答案 0 :(得分:4)

您无法在C(strB=strA)中分配数组。您必须使用strcpymemcpy将一个数组/指针的内容传输到数组。

答案 1 :(得分:2)

当你写:

char strB [80];

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

STRB = STRA;

不会做任何事情。