黑马程序员技术交流社区
标题:
关于c指针的一个陷阱题,网上看到的被虐了
[打印本页]
作者:
Devchen
时间:
2014-7-9 00:01
标题:
关于c指针的一个陷阱题,网上看到的被虐了
最近一致在看些C方面的题,这个题求输出,分析也看了,就是不了解深拷贝和浅拷贝是什么东东,求解
#include <stdio.h>
int main{
char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char *str5 = "abc";
const char *str6 = "abc";
char *str7 = "abc";
char *str8 = "abc";
if ( str1 == str2 ) printf("1\n");
if ( str3 == str4 ) printf("2\n");
if ( str5 == str6 ) printf("3\n");
if ( str7 == str8 ) printf("4\n");
return 0;
}
复制代码
作者:
Devchen
时间:
2014-7-9 00:20
代码发出来怎么看着不整洁那?
作者:
fantacyleo
时间:
2014-7-9 00:59
输出3和4。这就是考察数组名和指针变量的含义,深复制浅复制是扯远了。数组名是标识数组首元素地址的指针常量。str1和str2是不同的数组,首元素地址当然不一样。指针变量的值是一个内存地址。像"abc"这种字符串常量是放在一个固定的内存位置的,你无论创建多少个指针变量去指向它,都是指向同一个地址,也就是说这些指针变量的值都是一样的。
至于const,在这道题中是无关紧要的。const只是说这个变量只能被赋值一次,之后就不能再改变值了。
作者:
chain
时间:
2014-7-9 01:08
我觉得应该是输出2,3,4
作者:
幕夏
时间:
2014-7-9 01:27
同意2楼, 输出3和4
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2