可以& t&可以更新字符串指针变量

时间:2017-05-11 03:33:54

标签: c pointers

当我从键盘获取字符串时,程序按预期工作,我可以更新字符串的内容:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    char *cards;
    cards = malloc(256);
    fgets(cards, 256, stdin);
    char a_card = cards[2];
    cards[2] = cards[1];
    cards[1] = cards[0];
    cards[0] = cards[2];
    cards[2] = cards[1];
    cards[1] = a_card;
    puts(cards);
    return 0;
}

但是当我设置一个字符串文字的char指针时,程序崩溃了。我删除了行x到行y然后程序工作。我知道char指针无法更新。但是为什么它可以在从键盘读取时更新?

int main()
{

    char *cards;
    cards = malloc(256);
    cards = "JQK";
    char a_card = cards[2];
    cards[2] = cards[1]; // line x
    cards[1] = cards[0];
    cards[0] = cards[2];
    cards[2] = cards[1];
    cards[1] = a_card; // line y
    puts(cards);
    return 0;
}

期待帮助。谢谢你提前。

0 个答案:

没有答案