A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

最近一致在看些C方面的题,这个题求输出,分析也看了,就是不了解深拷贝和浅拷贝是什么东东,求解
  1.         #include <stdio.h>
  2.         int main{
  3.     char str1[] = "abc";
  4.     char str2[] = "abc";
  5.    
  6.     const char str3[] = "abc";
  7.     const char str4[] = "abc";
  8.    
  9.     const char *str5 = "abc";
  10.     const char *str6 = "abc";
  11.    
  12.     char *str7 = "abc";
  13.     char *str8 = "abc";
  14.    
  15.     if ( str1 == str2 ) printf("1\n");
  16.     if ( str3 == str4 ) printf("2\n");
  17.     if ( str5 == str6 ) printf("3\n");
  18.     if ( str7 == str8 ) printf("4\n");

  19.     return 0;
  20.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
ios风痕 + 1

查看全部评分

4 个回复

倒序浏览
代码发出来怎么看着不整洁那?
回复 使用道具 举报
输出3和4。这就是考察数组名和指针变量的含义,深复制浅复制是扯远了。数组名是标识数组首元素地址的指针常量。str1和str2是不同的数组,首元素地址当然不一样。指针变量的值是一个内存地址。像"abc"这种字符串常量是放在一个固定的内存位置的,你无论创建多少个指针变量去指向它,都是指向同一个地址,也就是说这些指针变量的值都是一样的。

至于const,在这道题中是无关紧要的。const只是说这个变量只能被赋值一次,之后就不能再改变值了。

评分

参与人数 1技术分 +1 收起 理由
ios风痕 + 1

查看全部评分

回复 使用道具 举报
我觉得应该是输出2,3,4
回复 使用道具 举报
同意2楼, 输出3和4
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马