请问这段错误代码 103哪儿错了?

问题: 这段代码的错误在哪里?
#include&&stdio.h&
void&Getmemery(char&*p)
&&&&p=(char&*)malloc(100);
void&main()
&&&&char&*str=NULL;
&&&&Getmemery(str);
&&&&strcpy(str,"hello&world");
&&&&printf("%s\n",str);
以上代码运行出错.如果改成:
#include&&stdio.h&
void&Getmemery(char&*p)
&&&&p=(char&*)malloc(100);
void&main()
&&&&char&*
&&&&Getmemery(str);
&&&&strcpy(str,"hello&world");
&&&&printf("%s\n",str);
请问,是什么原因?是因为不能对NULL地址重新赋值吗?可是,如果说不能对NULL地址赋值,以下代码为什么又是正确的.
#include&&stdio.h&
int&main(void)
int&*p&=&NULL;
}解决方案1:
http://blog.csdn.net/sdfgh2046/article/details/5647913
给个网址你&这里有很详细的讲解&看后还有疑问就在发帖吧
解决方案2:#include&&stdio.h&
#include&stdlib.h&
#include&string.h&
void&Getmemery(char&*&p)
&&&&p=(char&*)malloc(100);
void&main()
&&&&char&*str&=&NULL;
&Getmemery(str);
&strcpy(str,"hello&world");
&printf("%s\n",str);
&free(str);
这样也可以&
解决方案3:#include&&stdio.h&
#include&stdlib.h&
#include&string.h&
void&Getmemery(char&**p)
&&&&*p=(char&*)malloc(100);
void&main()
&&&&char&*str&=&NULL;
&Getmemery(&str);
&strcpy(str,"hello&world");
&printf("%s\n",str);
&free(str);
这才是完整的程序
解决方案4:
void&Getmemery(char&*p)
&&&&p=(char&*)malloc(100);
你这个代码是返回不了指针的,p是的中间变量,又去无回的;下面才是正确的做饭
char*&Getmemery(char&*p)
&&&&return&(char&*)malloc(100);
void&Getmemery(char&**p)
&&&&*p=(char&*)malloc(100);
}解决方案5:
要么引用,要么二级指针。void&Getmemery(char&**p)void&Getmemery(char*&&p)
在C++中引用用得多一点。
解决方案6:
你的两段代码都是错误的,&Getmemery的参数是指针,但是也是值传递,在函数内部malloc内存之后,p就失效了,导致内存泄露。正确的写法应该是:
void&Getmemery(char&**p)
&&&&*p=(char&*)malloc(100);
void&main()
&&&&char&*str&=&NULL;
&&&&Getmemery(&str);
&&&&strcpy(str,"hello&world");
&&&&printf("%s\n",str);
&&&&free(str);
至于为什么第二次没错,第一次错了,是因为第一次你将str赋值为NULL,因此strcpy会失败(向0地址复制),但是第二次没赋值,此时str的值是随机的(不是0),所以strcpy成功,但是这种写法是错误的,可能导致未知结果。
解决方案7:
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!
VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Turbo&C或Borland&C用Turbo&Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”
但我又不得不承认:
&有那么些人喜欢或者适合用“先具体再抽象”的方法学习和理解复杂事物;
&而另一些人喜欢或者适合用“先抽象再具体”的方法学习和理解复杂事物。
而我本人属前者。
这辈子不看内存地址和内存值;只画链表、指针示意图,画堆栈示意图,画各种示意图,甚至自己没画过而只看过书上的图……能从本质上理解指针、理解函数参数传递吗?本人深表怀疑!
这辈子不种麦不收麦不将麦粒拿去磨面;只吃馒头、吃面条、吃面包、……甚至从没看过别人怎么蒸馒头,压面条,烤面包,……能从本质上理解面粉、理解面食吗?本人深表怀疑!!
“学习用汇编语言写程序”
“VC调试(TC或BC用TD调试)时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习C和汇编的对应关系。”
不是一回事!
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
有人说一套做一套,你相信他说的还是相信他做的?
其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗?
不要写连自己也预测不了结果的代码!
电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
十字链表交换任意两个节点C源代码(C指针应用终极挑战)http://download.csdn.net/detail/zhao4zhong1/5532495解决方案8:
值传递和地址传递!
void&Getmemery(char&**p)
以上介绍了“ 这段代码的错误在哪里?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:/itwd/2190797.html
上一篇: 下一篇:展开全部下一篇:在我们中国,美食一直是我们的骄傲。煎炸炒炖皆不在话下,于是,就出现了一种我们都很熟悉的画面。油烟永远是中国厨子心中的痛。到了夏天,很多植物都会出现缺水现象,因此,我们需要大量的浇水,而且要防止阳光直晒,那么,有没有植物是不需要浇水的呢?最近这段时间,在我国的云南玉溪很多业主家庭都在进行新房装修,其中新房装修中的客厅装修很多人都特别重视电视背景墙装修,虽然说现在随着互联网,电所谓牛年农历七月,从公历来说是指从日至9月18日的这段时间,在这段期间,家居的风水情况会出现一次小的变化情况,因此在本月中很多人都希望能够在年前住上新房,因此这段时间都在紧张的进行装修,冬天由于环境温度与湿度等因素,在装修的过程中容易出现瓷砖粘贴不牢固、漆面效果时尚是个圈,这句话用在设计界也是一样。曾经被淘汰的经典图案、早就不时兴的花纸等如今绕了一圈之后也再次‘整装出发’散发不一样传统技艺之美。如今空调已经是家家必备的了,其功能也越来越多元化,以往的空调往往只能制冷,而今的空调不单能制冷,还能制热,这也是空调在南北方都能受到欢迎的原购买实木地板和复合地板的时候,人们总会犹豫,一方面是这两种地板装修材料的价格不同,悬殊也比较大,另一方面就是这两种产品在外观上的对比是非常大时间:11月22日小区名称:长桥四村装潢公司:老江苏装饰监理:汪监理最近这段时间阴雨连天,小编以前开摩托车摔伤的膝盖隐隐有些酸痛,这样的天气11月25日,具备先进生产技术和工艺的东陶(福建)有限公司正式竣工投产,这标志着TOTO在中国市场又迈出了重要的一步。2015年7月 Java大版内专家分月排行榜第二2015年4月 Java大版内专家分月排行榜第二
2015年3月 Java大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 651错误代码 的文章

 

随机推荐