标题:请问该程序运行main函数会有什么样的结果,为什么?
只看楼主
fz19910125
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:52
专家分:11
注 册:2010-10-12
结帖率:84.62%
已结贴  问题点数:13 回复次数:7 
请问该程序运行main函数会有什么样的结果,为什么?
void GetMemory(char *p)
    {
         p = (char *)malloc(100);
    }

    void main(void)
    {
         char *str = NULL;
         GetMemory(str);   
         strcpy(str, "hello world");
         printf(str);
    }
我感觉是屏幕上输出:hello world
但不知道是为什么
 谢谢大家!
而且我把这段代码复制到VC上运行不了
#include "stdafx.h"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "malloc.h"
void GetMemory(char *p)
    {
         p = (char *)malloc(100);
    }

    void main(void)
    {
         char *str = NULL;
         GetMemory(str);   
         strcpy(str, "hello world");
         printf(str);
    }
错误为:
--------------------Configuration: japan - Win32 Debug--------------------
Compiling...
p139.cpp
C:\Documents and Settings\Administrator\桌面\新建文件夹 (3)\japan\p139.cpp(70) : error C2018: unknown character '0xa1'
C:\Documents and Settings\Administrator\桌面\新建文件夹 (3)\japan\p139.cpp(70) : error C2018: unknown character '0xa1'
C:\Documents and Settings\Administrator\桌面\新建文件夹 (3)\japan\p139.cpp(75) : error C2018: unknown character '0xa1'
C:\Documents and Settings\Administrator\桌面\新建文件夹 (3)\japan\p139.cpp(75) : error C2018: unknown character '0xa1'
C:\Documents and Settings\Administrator\桌面\新建文件夹 (3)\japan\p139.cpp(76) : error C2018: unknown character '0xa1'
C:\Documents and Settings\Administrator\桌面\新建文件夹 (3)\japan\p139.cpp(76) : error C2018: unknown character '0xa1'
C:\Documents and Settings\Administrator\桌面\新建文件夹 (3)\japan\p139.cpp(77) : error C2018: unknown character '0xa1'
C:\Documents and Settings\Administrator\桌面\新建文件夹 (3)\japan\p139.cpp(77) : error C2018: unknown character '0xa1'
C:\Documents and Settings\Administrator\桌面\新建文件夹 (3)\japan\p139.cpp(78) : error C2018: unknown character '0xa1'
C:\Documents and Settings\Administrator\桌面\新建文件夹 (3)\japan\p139.cpp(78) : error C2018: unknown character '0xa1'
执行 cl.exe 时出错.

japan.exe - 1 error(s), 0 warning(s)

[ 本帖最后由 fz19910125 于 2011-2-15 14:03 编辑 ]
搜索更多相关主题的帖子: void 100 include hello world 
2011-02-15 13:55
『点点滴滴』
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:168
专家分:1035
注 册:2007-7-9
得分:3 
自己把代码输一次就OK了,不过结果不是hello world
2011-02-15 14:15
lyj23
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:140
注 册:2010-10-31
得分:3 
以下是引用fz19910125在2011-2-15 13:55:56的发言:

void GetMemory(char *p)
    {
         p = (char *)malloc(100);
    }

    void main(void)
    {
         char *str = NULL;
         GetMemory(str);   
         strcpy(str, "hello world");
         printf(str);
    }
我感觉是屏幕上输出:hello world
但不知道是为什么
 谢谢大家!
而且我把这段代码复制到VC上运行不了
#include "stdafx.h"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "malloc.h"
void GetMemory(char *p)
    {
         p = (char *)malloc(100);
    }

    void main(void)
    {
         char *str = NULL;
         GetMemory(str);   
         strcpy(str, "hello world");
         printf(str);
    }
printf("");//输出内容要加"",好像puts()是不用加的
char *str; /*是一个指针类型,你给他指向空,又让它指向一个新内存单元……有用吗?还是不能被赋值,hello word 还是赋值不进去!*/
//VC里面不要包含malloc.h你要用malloc()函数已经在stdlib.h里面。
//你干嘛包含stdafx.h好像没用吧!
//C标准库函数不要用""包含,用<>更快!宏定义你学了就知道!

[ 本帖最后由 lyj23 于 2011-2-15 14:50 编辑 ]
2011-02-15 14:47
fz19910125
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:52
专家分:11
注 册:2010-10-12
得分:0 
谢谢,我刚学习C语言,许多的东西都不太懂
我想再问一下
void GetMemory(char *p)
{
         p = (char *)malloc(100);
    }
这是什么意思,我看不懂,这是在C语言的哪一章节能讲到?
我看的是谭浩强的C语言
还有,就是这个程序运行的结果是什么?
谢谢各位了    。。。。

2011-02-15 15:16
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
得分:3 
程序代码:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "malloc.h"
void GetMemory(char *p)     //测试程序1
    {
       
    p = (char *)malloc(100);
    // printf("=***=%d %d\n",p,&p);
    }

char *getMemory()           //测试程序2
    {
       
     char *p = (char *)malloc(100);
     return p;
    }

void GetMemory1(char **p)   //测试程序3
{
    *p = (char *)malloc(100);
}



 int main(void)
    {
      char *str = NULL;

       GetMemory(str);
       str = getMemory();
       GetMemory1(&str);

      strcpy(str, "hello world");
      puts(str);
      getchar();
      return 1;
    }
这个程序用于教学有意义

小代码,大智慧
2011-02-15 15:45
fz19910125
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:52
专家分:11
注 册:2010-10-12
得分:0 
看不懂!
2011-02-15 19:16
fujia305
Rank: 1
等 级:新手上路
帖 子:2
专家分:3
注 册:2011-2-14
得分:3 
void GetMemory(char *p)     //测试程序1
    {
      
    p = (char *)malloc(100);
    // printf("=***=%d %d\n",p,&p);
    }


char *getMemory()           //测试程序2
    {
      
     char *p = (char *)malloc(100);
     return p;//返回p的值
    }


这几段是函数,是主程序前定义好的调用函数,他们之间是互通你可以去函数那章看看,分析一下看看,有什么不懂的可以再问。
2011-02-15 20:44
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
得分:3 
分析一下看看,有什么不懂的可以再问。

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2011-02-15 21:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-332223-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.188447 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved