C 程序问题(四) - C/C++ / C语言
#include "stdio.h" int main() { char *ch(char *, char *); char str1[]="I am glad to meet you!"; char str2[]="Welcom to study C!"; printf("%s", ch(str1, str2)); return 0; } char *ch(char *str1, char *str2) { char *p; p=str2; if(*str2 == NULL) return NULL; // exit(-1); do { *str2=*str1; str1++; str2++; }while(*str1!=NULL); return(p); } 问题一:为什么输出是:I am glad to meet you!am glad to meet you! 即:为什么str2[]会被改成I am glad to meet you!am glad to meet you!呢? 我单步调试时觉得str2[] = I am glad to meet you!么? 问题二:在char* ch(char *str1, char *str2)函数中,p是局部指针,最后用return(p);来返回指针地址是否 不太安全呢?如果是的话,我可以怎么改或者怎么做比较好? 谢谢!!!
没事,p的地址实际上是str2,改动str2就是改p,所以能返回,而且p会跟着str2的改动走 *str2 = '\0'; 少了这个, 观望中 没多少分了引用 #include <stdio.h> int main() { char *ch(char *, char *); char str1[]="I am glad to meet you!";
相关问答:
最近突然想自己来实现一个五子棋程序,但不知道怎么开始,自己也没学画图形函数,能在控制台下直接写吗>>>????? 控制台?比图形界面更麻烦。 http://search.download.csdn.net/search/%E4%BA%94%E5%AD%90% ......
请问用C或C++如何编写求解3D魔方的程序,该从何开始? 谢谢各位,帮忙提点建议吧。 http://www.mofang.net/code/176/182/6581.html 我只能突破60秒!唉。 我刚过40秒 google的android中有个OpenGL ES + ......
请问各位高手如何用C/C++获得系统未安装补丁 好像很专业的东西。。。 查注册表 每个补丁如果安装了都会在注册表里面登记 请问能不能更清晰些,我想用c\c++查出来,不好意思,我是新手。还望指教。谢 分值 ......
问题一: 在对齐为4的情况下 struct BBB { long num; char *name; short int data; char ha; short ba[5]; }*p; p=0x1000000; p+0x200=____; (Ulong)p+0x200=____; (char*)p+0x200=____; 假设在32位C ......