C语言程序,按照书打的但是直接运行不了,书上运行结果是 abc def ,是怎么的出来的结果?

#include<stdio.h>
#include<stelio.h>
main(){
char *p,*q;
p=(char*)malloc(sizeof*(char)*20); 还有malloc这句,这个格式后面这个*20代表什么
q=p;
scanf("%s%s",p,q);
printf("%s%s\n",q,p);
}

没看出这个程序具有什么意义,应该是学开辟内存空间的malloc函数吧
这个程序有地方写错了,并没有stelio这个头文件,应该是stdlib.h这个头文件包含有malloc函数
p=(char*)malloc(sizeof “*” (char)*20); //打上引号那个地方是多余的

这里也有个错sizeof函数返回参数的所占内存大小,int返回4 double返回8等等
至于*20呢,我打个比方
char a[20];== char * a;a =(char)malloc(sizeof(char)*20);
这两种定义方式得到的结果都是一样的 定义了一个有20个元素的字符数组a。
具体用法可以参考下面这个程序:
#include<stdio.h>
#include<stdlib.h>
int main()
{
char a[20];
char * b;
b =(char*)malloc(sizeof(char)*20);
for(int i = 65;i<91;i++)
{
a[i] = i;
b[i] = i;
}
for(int j = 65;j<91;j++)
{
printf("a: %c\tb: %c\n", a[j], b[j]);
}
return 0;
}

在编写大的程序时使用了malloc后,如不在需要分配的内存,记得使用free释放所申请的内存
如不释放则会一直占用次内存,直到程序结束,在老些的操作系统中甚至不会收回这些内存,需要等到计算机关机,内存条数据清空时才得到释放
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-23
#include<stdio.h>
#include<stelio.h> //改成#include<stdio.h>
main(){
char *p,*q;
p=(char*)malloc(sizeof*(char)*20); //20表示char型数据的个数,相当于实现char p[20];
q=p;
scanf("%s%s",p,q); // 两个%s之间应有一空格
printf("%s%s\n",q,p);
// 严格地说,应该在此加两句:free(p); return 0;
}
第2个回答  2013-03-23
最简单的是直接新建一个控制台程序,然后添加代码
第3个回答  2013-03-23
把第二行去掉,把第五行sizeof后面的“*”去掉

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网