下述程序有什么问题?
#include<string.h>
#include<stdio.h> 
#include<stdlib.h>

void getmemory(char*p)  
{        
p=(char *) malloc(100);    
strcpy(p,"hello world");

}

int main( ) 
{    
   
 char *str=NULL;    
 getmemory(str);  
 printf("%s\n",str);   
 free(str);    
 return 0;   
}
解析:
1.getmemory 函数中对于指针的值来说是值传递,也就是说函数定义了一个临时变量p,p的值与str的值相同,都指向同一个地址,但是在p=(char*) malloc(100);
这句中,系统开辟了另一个空间,p指向了这个新的空间,也就是说,p和str病不指向同一个地址了,那么,接下来对×p的操作也就和str无关了,所以str的值始终没有变过,一直为null。
2.函数传入的是指针p的一个副本,而实参str没有真正被修改。因此输出为空,main函数正常返回。
为使题目功能可行,
法一:按引用传参
void getmemory(char* &p)  
法二:使用指针的指针

#include<string.h>
#include<stdio.h> 
#include<stdlib.h> 
void getmemory(char** p) 
 {    
   
  *p=(char *) malloc(100); 
   
    strcpy(*p,"hello world"); 
 
}

int main( ) 
{    
char *str=NULL;    
 
getmemory(&str);    
  
printf("%s\n",str);   
   
free(str);    
   
return 0;

}

下述程序有什么问题?相关推荐

  1. python中基本程序结构_关于Python 程序格式框架的描述,正确的是( )

    [判断题]元组的元素是可读的,可以对元组进行更新.增加.删除操作. [多选题]哪些选项关于循环结构的描述是正确的( ) [单选题]以下可以终结一个循环的是 . [判断题]对于大量列表的连接,exten ...

  2. c语言马秀丽,C语言程序计 清华大学出版社 马秀丽 刘志妩科后习题9答.doc

    货懊几榔孵几节吏膝蔚缩乱柱下斋瑞喧吸啪室弊幌贝榷纫绑堡雌廖棵楼篓煌僚阉轿蓝帆塞描秸腿村虚涯魔曰昌荡氛蔚堪芬渺引衔踪宾激种蔬磐蘸片冻着硒转坟棺骸择扦不拱拴观垣琐棍致蛇懊苔渗弯信嫁吾音坊誉聂懂斌梁窘婶靖叶 ...

  3. c语言程序题在哪儿搜,国家二级计算机考试c语言题库

    在计算机国家二级的C语言考试中,有哪些题目类型呢?下面是小编给大家整理的二级计算机考试c语言选择题及答案,供大家参阅! 二级计算机考试c语言选择题 1.以下程序的输出结果是*** ***. main* ...

  4. 高级程序语言c 平时作业,东北大学20秋学期《高级语言程序设计基础X》在线平时作业3...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 一.单选题 共25题,100分 1 4分 设有一段程序: int *var,a: a=100:var=&a:a=*var+10: 执行上面程序段后 ...

  5. C语言程序改错和标答不同,C语言程序设计试题及答案3

    信息安全技术C语言练习题 总共46题共99分 一.单选题 (共20题,每题2分,共40分) 1. 若有定义"float x=1.5;int a=1,b=3,c=2;",则正确的sw ...

  6. 基于Linux的C++ Part 5 程序组织与开发方法

    Part 5 程序组织与开发方法 库与接口 随机数库 作用域与生存期 量的作用域与可见性 量的存储类与生存期 函数的作用域与生存期 声明与定义 典型软件开发流程 软件工程概要 问题的提出 需求分析 概 ...

  7. 二级c语言填空题库及答案,计算机二级C语言程序填空题及答案解析精选

    { int a[10],i,*k=&i: for(i=0:i<10:i++) scanf(\: findmin(a,10,k): printf(\: } [3.4]下面程序的功能是计算1 ...

  8. c语言程序精品课程试题

    <C语言程序设计>精品课件试题 一.单项选择题 导读:单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案.本类习题主要检查对C语言基本概念的掌握情况,读者可根据学习进度选做部分 ...

  9. c语言不用第三个变量 实现两个数的对调,下面程序功能是不用第三个变量,实现两个数对调操作 ....docx...

    下面程序功能是不用第三个变量,实现两个数对调操作 ... [3.1]下面程序的功能是不用第三个变量,实现两个数的对调操作.#include main(){ int a,b:scanf("%d ...

最新文章

  1. java 应用是单机集群_Java集群优化——使用Dubbo对单一应用服务化改造
  2. 青龙羊毛——梅川衣服俩小孩(搬)
  3. ❤️详解腾讯面试❤️
  4. qt-制作生成dll动态链接库实例
  5. springCloud - 第4篇 - 消费者调用服务 ( Feign )
  6. 如何将数据写入excel中,而不覆盖原有数据
  7. vb光环褪去java、c/c++/c#成编程主流
  8. 软件需求分析用例图 实例简述
  9. Windows:文件系统FAT32、NTFS和exFAT
  10. 什么是二叉平衡树,如何插入节点,删除节点,说出关键步骤。
  11. 南京工业大学计算机考研调剂,2020年南京工业大学考研调剂信息
  12. 《大型网站技术架构》《K8S进阶实战》等书籍!送45本!
  13. Windows防火墙无法更改某些设置
  14. 孕妈妈春季饮食有哪些忌讳 孕妈妈春天不适合吃的东西
  15. Power BI中的透视列和逆透视
  16. mapgis矢量化怎么打分数_MAPGIS矢量化操作步骤
  17. 地铁三号线 - 95后的财务自由
  18. 2019年最佳WordPress社交媒体插件
  19. 基于 React hooks + Typescript + Cesium 实现模型剖切分析
  20. PATA 1093 有几个PAT

热门文章

  1. 关于使用旋转四元数绕轴旋转θ角度时,使用参数是θ/2的理解
  2. String 堆内存和栈内存
  3. CentOS6.8 安装/升级Python2.7.x,并安装最新setuptools、pip、fabric程序总结
  4. 理解JAVA与C的运行机制
  5. 聊聊WebClient的LoadBalance支持
  6. java json转map
  7. Yii::app()-request-getParam($name, $defaultValue)
  8. ImportError: No module named babel.dates
  9. WEBI 中的参数传递
  10. cacti 网络流量监测图形分析工具