如何获取 const char * 的值

use*_*867 0 c pointers

刚接触 C 并试图理解指针以及如何使用它们。我明白指针是对内存位置的引用,我想我得到了基础知识和简单的例子,但是如何将 const char 指针的值分配给 char?

当我尝试时,我收到警告;

incompatible pointer to integer conversion initializing 'char' with an expression of type 'const char *' [-Wint-conversion]
Run Code Online (Sandbox Code Playgroud)

我了解类型差异,但我该如何解决它。

这是代码:

#include <time.h>
#include <stdbool.h>

#define SUITS 4
#define FACES 13
#define CARDS 52
#define HAND_SIZE 5

struct Card {
    char suit;
    char face;
};

void dealHand(const char *wFace[], struct Card *wHand[]);

int main(void)
{
    //initialize deck array
    unsigned int deck[SUITS][FACES] = {0};

    srand(time(NULL)); // seed random-number generator

    //initialize face array
    const char *face[FACES] = 
        {"Ace", "Deuce", "Three", "Four",
         "Five", "Six", "Seven", "Eight",
         "Nine", "Ten", "Jack", "Queen", "King"};

    struct Card *hand[HAND_SIZE];
    dealHand(face, hand); //deal the deck

}

//deal cards in deck
void dealHand(const char *wFace[], struct Card *wHand[])
{
    unsigned int c = 0;
    char f = wFace[2];
    struct Card aCard;
    aCard.face = f;
    wHand[0] = &aCard;
}
Run Code Online (Sandbox Code Playgroud)

我在线收到警告:

char f = wFace[2];
Run Code Online (Sandbox Code Playgroud)

使用 (const *) 进行转换似乎不是解决方案。

gio*_*gim 5

字符 f = wFace[2];

f是字符,它的范围可能是 [-128,127] (不是必需的)。值wFace[2]是指向内存地址的指针。您在这里分配了不同的类型,您期望什么?


这就是wFace[2]可能的值:

wFace[2] == 0x1000一些内存地址。然后看看内存

Memory address: 0x1000 0x1001 0x1002 0x1003
Value stored:   H      i      !      0
Run Code Online (Sandbox Code Playgroud)

如果你这样做,*wFace[2]它会给你'H'; 如果你这样做,*(wFace[2]+1)它会给你“我”回来。


您更可能想要的是:

const char *f = wFace[2];
Run Code Online (Sandbox Code Playgroud)