求解释如下的C++程序, cout<<sizeof(n)<<" "<<*n<<" "<<*n+1<<endl; 是什么意思?以及*n、*n+i、*n+1? 10
#include<iostream>usingnamespacestd;intmain(){intn[5]={10,11,12,13,14};cout<<sizeof(n...
#include<iostream>using namespace std;int main(){ int n[5]={10,11,12,13,14}; cout<<sizeof(n)<<" "<<*n<<" "<<*n+1<<endl; for(int i=0;i<5;i++) cout<<(*n+i)<<" ";}为什么会出现下图的结果呢
展开
2个回答
展开全部
要看懂这段程序,关键是要熟悉C++的数组的概念。数组是一段在空间上连续,元素大小、类型相等的内存空间及其所存储的数据。
这段程序n是一个长度为5的数组,数组元素的类型是int,元素内容是10,11,12,13,14,这5个数字在内存上是连续的,而n这个标识符本身又可以看做是一个常量指针,指向前面所述的连续内存空间的开头。弄清楚这些就可以来看程序。
首先sizeof(n)是求数组长度,int大小是4,5个int就是4*5=20,所以第一个输出的是20;然后是*n,刚刚说了n本身可以看做指针,指向内存空间的开头,而这段程序的那个内存空间开头的内容是10,因此输出10;*n+1是10+1=11,所以输出11(注意分清楚与*(n+1)的区别)
后面for语句里面的和*n+1类似
这段程序n是一个长度为5的数组,数组元素的类型是int,元素内容是10,11,12,13,14,这5个数字在内存上是连续的,而n这个标识符本身又可以看做是一个常量指针,指向前面所述的连续内存空间的开头。弄清楚这些就可以来看程序。
首先sizeof(n)是求数组长度,int大小是4,5个int就是4*5=20,所以第一个输出的是20;然后是*n,刚刚说了n本身可以看做指针,指向内存空间的开头,而这段程序的那个内存空间开头的内容是10,因此输出10;*n+1是10+1=11,所以输出11(注意分清楚与*(n+1)的区别)
后面for语句里面的和*n+1类似
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询