C Primer Plus Problem
#include <stdio.h>#include <string.h>
#define SIZE 100
#define answer "Grant"
char *s_gets(char * st, int n)
{
int i =0;
char *ret_val;
ret_val = fgets(st,n,stdin);
if (ret_val)
{
while(st!='\n' && st != '\0')
i++;
if(st == '\n')
st = '\0';
else
while(getchar() != '\n')
continue;
}
return ret_val;
}
int main(void)
{
char *try;
s_gets(try,100);
puts("Who is buried in Grant's dig?");
while(try != answer)
{
printf("No,that's wrong. Try aggin");
s_gets(try,SIZE);
}
puts("Right!DO a good job!");
return 0;
}《C Primer Plus 》上的例子 说---------------------answer 和 try 都是指针,这我就不明白了?真的吗?求背后原理
{:10_327:}
谢谢你们啦!!!!!!!!!
try是个止震板毫无疑问
另一个实验一下就知道了,另外宏变量最好全部大写
#include <stdio.h>
#include <string.h>
#define SIZE 100
#define answer "Grant"
int main(void)
{
printf("%s\n", answer+1);
/*
实际上,宏定义的字符串常量在预编译的时候把answer替换成字符串常量(“Grant”);
所以answer+1可以理解为“Grant”+1 即常量首地址+1,故输出“rant”.
*/
printf("%c\n", answer); // 当成数组来使用
return 0;
}
页:
[1]