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!";
相关问答:
请问用C或C++如何编写求解3D魔方的程序,该从何开始? 谢谢各位,帮忙提点建议吧。 http://www.mofang.net/code/176/182/6581.html 我只能突破60秒!唉。 我刚过40秒 google的android中有个OpenGL ES + ......
编译器:C-Free4 mysql 单独安装的,现在为apache+php+mysql可以使用。 最近在练习c,c++;想用c,c++连接下我的mysql,好多地方多说mysql.h找不到。而且我mysql没有所谓的include文件夹啊。 忘高手指点一� ......
问题一: 在对齐为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 ......