Jor*_*eFG 1 c string pointers string-literals playing-cards
我只是从Deitel看这个例子:
#include <stdio.h>
struct card {
char *face;
char *suit;
};
int main( void )
{
struct card aCard;
struct card *cardPtr;
aCard.face = "Aces";
aCard.suit = "Spades";
cardPtr = &aCard;
printf( "%s%s%s\n%s%s%s\n%s%s%s\n", aCard.face, " of ", aCard.suit,
cardPtr->face, " of ", cardPtr->suit,
( *cardPtr ).face, " of ", ( *cardPtr ).suit
);
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我看到有一个指向char的指针,但从未想过你可以使用char *... 来保存字符串
问题是:这里如何处理内存,因为我没有看到任何类似的东西char word[50].
编译器保留一些足够大的内存位置来存储文字,并将其地址分配给指针.此后你可以像平常一样使用它char *.需要注意的是,您无法修改它指向的内存.
char *str = "This is the end";
printf("%s\n", str);
str[5] = 0; /* Illegal. */
Run Code Online (Sandbox Code Playgroud)
顺便提一下,这个C FAQ也讨论了这个问题.