运行如下结果 输出时什么?
来源:互联网 发布:宿城区网络问政 编辑:程序博客网 时间:2024/04/28 16:51
运行如下代码,输出时什么?
一、
char* GetString1(){ char p[] = "Hello World"; return p;} char* GetString2(){ char *p = "Hello World"; return p;} int _tmain(int argc, _TCHAR* argv[]){ printf("GetString1 returns: %s. \n", GetString1()); printf("GetString2 returns: %s. \n", GetString2()); return 0;}原文解释:第一个函数返回的是数组的首地址,因为当函数GetString1函数返回时,数组内的空间被释放,所以打印的结果是随机的东西;而函数GetString2返回的是一个指针,指针指向的是一个常量字符串,全局变量对待,函数返回时空间不会被释放,所以函数返回的是Hello World
但是我用Visual studio 2010的编译器却输出这样结果:
这个问题待解决
二、
#include <stdio.h>int main(void){ char str1[] = "hello world"; char str2[] = "hello world"; char *str3 = "hello world"; char *str4 = "hello world"; if(str1 == str2) printf("str1 equal to str2\n"); else printf("str1 not equal to str2\n"); if(str3 == str4) printf("str3 equal to str4"); else printf("str3 not equal to str4"); return 0;}
str1和str2是两个字符串数组,编译器会为它们分配两个空间,并把字符串拷贝进去。str1和str2的值不同!所以不会相等。
str3和str4是两个指针,我们无需为它们分配内存以存储字符串的内容,而只需要把它们指向“hello world"在内存中的地址就可以了。由于”hello world"是字符串常量,所以在内存中只有一个拷贝,因为str3和str4指向的是同一个地址。
参考:http://zhedahht.blog.163.com/blog/static/254111742011299219769/
- 运行如下结果 输出时什么?
- 异常捕捉先后顺序------getCustomerInfo()方法如下,try中可以捕获三种类型的异常,如果在该方法运行中产生了一个IOException,将会输出什么结果()
- 完成如下结果 ,输出:字段名称,内容
- SAS运行输出看不到结果
- try-catcht-finally运行时输出结果易错点
- 线程例子时,结果出现如下错误
- JSP运行命令行程序并输出结果
- g++运行结果输出到文件
- phpstorm在控制台输出脚本运行结果
- Phpstorm在控制台中输出运行结果
- [原创]Python 运行 shell 获取输出结果
- JAVA 一个有趣的现象 你能猜到如下代码运行的结果吗?
- 小应用程序运行结果如下:红色方块在文字上从左向右循环移动。
- 编程输出如下图形
- 编程输出如下图像。
- 给出如下程序的结果
- 后台运行程序,结果的输出宽度不够怎么办?
- 结果输出到控制台对运行时间的影响
- Unix/Linux下的IPC---共享内存
- 哈老师一到的飞鸽传书
- 在 Tomcat 下运行第一个Servlet
- linux ipc——shared memory
- Android手机震动控制
- 运行如下结果 输出时什么?
- python 装饰器
- 大数加法,华为 程度2
- TreeView图片添加
- 找春天春天的飞鸽传书
- 在排序数组中查找和为给定值的两个数字
- ARM LED裸机实验(gun汇编)
- IOS随笔——页面跳转
- 为什么要用存储过程