C++两道面试题,有兴趣的来看看,看你能不能做对,该如何处理
C++两道面试题,有兴趣的来看看,看你能不能做对
威盛软件面试题目
1. char * str1= "hello ";
char * str2= "hello ";
*str1= 'p ';
cout < <str2 < <str1 < <endl;
问执行结果
2. char * str= "hello, world! "
strcpy(str, "hi ");
大概是这样,问执行结果
------解决方案--------------------
我都说了很明白了,看来VC版还有很多人需要补习一下指针概念
“两个不同的指针,但是指针指向的地址是相同的”
&str1与&str2是指针的地址 这两个是不同的
str1和str2才是指针指向的地址 这两个是相同的
由于两个指针指向相同的字符串常量。
==============================
在这解释一下为什么这么优化的原因
因为是字符串常量,也就是说编译器假设其不会被更改
如果在内存中保存两份相同的字符串,这样将造成资源的浪费
因此,编译器优化之后使两个指针指向相同的字符串。
威盛软件面试题目
1. char * str1= "hello ";
char * str2= "hello ";
*str1= 'p ';
cout < <str2 < <str1 < <endl;
问执行结果
2. char * str= "hello, world! "
strcpy(str, "hi ");
大概是这样,问执行结果
------解决方案--------------------
我都说了很明白了,看来VC版还有很多人需要补习一下指针概念
“两个不同的指针,但是指针指向的地址是相同的”
&str1与&str2是指针的地址 这两个是不同的
str1和str2才是指针指向的地址 这两个是相同的
由于两个指针指向相同的字符串常量。
==============================
在这解释一下为什么这么优化的原因
因为是字符串常量,也就是说编译器假设其不会被更改
如果在内存中保存两份相同的字符串,这样将造成资源的浪费
因此,编译器优化之后使两个指针指向相同的字符串。