世纪骗局 三峡:一个C语言程序,请您指点

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/03 06:13:26
#include<stdio.h>
main(void)
{char *p,*q,t;

p=&t;
t='x';
q="what";
printf("%c%s",*p,*q);
}
我在VC6。0上运行。发现没错误,但是就是显示不出来
请您指正不足之处。详细说明一下。谢谢,特别是后面的字面字符串直接赋值给指针,到底行不行的通(书上有些例子就这么写的),那么字面字符可不可以直接赋值给指针呢?
如:char *p;
p='x';

这样就可以了
关键在printf这句上,你看看就明白了!`
区别在于*q和q ,*p是一个指向字符串的首地址,可以把他看做一个字符,因此和你输出的%s发生异常情况。看看吧,关键在于自己的理解!
#include <stdio.h>

void main()
{char *p,*q,t;
t='x';
p=&t;
q="what";
printf("%c\n%s",*p,q);

}

#include<stdio.h>
main(void)
{char *p,*q,t;

p=&t;
t='x';
q="what";
printf("%c%s",*p,q);
}
注:不是*q而是q
%s是字符串,*q是字符型的,不匹配
那么什么没有输出呢?
因为字符串要找到\0才能结束,但*q里并没有\0

字符串可以直接赋值给指针,但是字符不可以。
国要为字符串其实就是一个字符数组,所以可以直接赋值给指印,而字符就不是。