C++中定义一个一维数组,比如int a[10];除了为数组开辟空间外,是不是还要开辟一个指针空间?

比如int a[10];a[10]这个数组中,数组名a,其实应该就是数组的首地址吧,那这个a不就相当于一个指针了吗?比如a指向的地址是1000,那编译的时候要不要为保存1000这个数据开辟一个指针空间呢?如int *a;a=&a[0];这样的

不是这样的。如果这个数组声明在函数内部,那么它的地址1000就是函数参数压进栈后,当前栈寄存器ss中保存的栈基址和sp(堆栈指针寄存器)寄存器指向的栈顶偏移量通过计算得出的内存地址。如果是全局的,那么它的地址1000是编译器在内存中开辟的某个连续的地址空间,该空间的首地址为1000,保存在Cpu中的某个寄存器中。
int *a;a=&a[0];这条语句,不考虑语法的问题,那么和你上面说的意思差不多,这里指针a也是一个变量,也是需要内存空间存储的。它的地址究竟是多少,就是上面一段所叙述的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-09
不是 ! 数组的地址不需要放在分配一个指针变量里,在需要数组名作为地址的地方直接使用地址。
第2个回答  2013-06-09
是的,是这样子的!
内部实现的,我们不用管,只管用
第3个回答  2013-06-09
不是指针,只是一个数组,需要开辟一个指针指向数组

C++中int a[10]和int a=new int[10]]有什么区别
1、如果只是int a[10]和int* a=new int[10]比较的话,前者可能还更简单一点。只是在使用上int* a=new int[10]需要判断内存是否分配成功,以及在不用时需要使用delete[] a进行内存释放;2、如果不是a[10],而是a[1000000000]或者更大的话,那一般情况下,就只能使用int* a=new这种方式了。这...

c++中若定义数组a[10],那么数组元素a[10]代表什么? 此时a[-1]存在...
a[10]代表a[9]后面的那段内存。a[-1]存在,但是对于正常的程序来说,那毫无意义,它指的是这个数组首地址前面的一段内存。~~~可以用这个技巧~~,不过一定得注意不要越界~

若有定义:int a[10],则对数组a元素的正确引用是?
a数组中包含有10个元素,并为这10个元素分配内存空间。数组元素的一般形式为:数组名[下标]。其中的下标只能为整型常量或整型表达式。如为小数时,C编译将自动取整。例如,a[5],a[i+j],a[i++]都是合法的数组元素。数组元素通常也称为下标变量。总之数值在0到9之间,超过此范围则有误。

C++问题:如何定义一个未知大小的一维数组,数组大小由输入的值决定_百度...
方法一:……int n;cout<<"请输入你想建立的一维数组维数:"<<endl;cin>>n;int *array = new int[n];……delete [] array;方法二:现代c++程序一般用容器vector代替数组。vector<int> vec;添加值(比如1)用vec.pushback(1)

比如定义一个数组a[10];a 并没有定义成为指针变量,为什么可以使用"*...
是的,只要是合法的地址,都可以这样做。C\/C++语言中,数组名称就代表数组首地址,所以(a+i)就可以表示a[i]元素的地址,因此*(a+i)就可以表示a[i]

C++中,往一个一维数组中连续输入数值,为什么在超过数组元素个数后还能...
是要是你不止定义了这一个数组的话,那么就可能出现你说的那种现象。因为自动变量在系统内存中的存放次序并没有统一的规定,但系统在一般情况会按照程序中定义这些对象的书写顺序依次存放。如:include <iostream.h> void main(void){ int x=500,a[5]={0},y=200;a[5]=1000;cout<<"x="<<x...

C++怎么让一个数组是空的
C++中定义一个数组,没有绝对空的概念。因为,定义数组后,系统就会给数组分配内存空间,该空间可能以前被其它程序使用过,其中留有原来写入的数据(对于本程序来说,就是垃圾数据),也可能没有被使用过,其内存数据值为0.如果想在定义数组后,将数组内容清为0,则可以采用以下三种方法:初始化为0 in...

c++里怎么定义一个不知道大小的数组
array01.cpp实现了一个变长的一维数组,但是要养成一个好习惯,就是注意要注销指针p,使程序释放用new开辟的内存空间。 当然使用C++标准模版库(STL)中的vector(向量)也可以实现变长数组: \/\/文件名: array02.cpp #include<iostream> #include<vector> using namespace std; int main() { int len;...

c++ 定义数组,必须指定大小码?
有两种情况。第一种,定义形如下面的不需要:int a[]={3,455,5} 意思就是数组里有元素时是不需要指定大小的。当然一维的可以,多维的你可以查下资料!第二种,int a[4];这种就需要了。不知道你明白不?

C++定义一个有10个元素的一维数组计算最大值和最小值,并计算最大值附近...
namespace std;int main(){ \/\/数组,可以做修改或输入 int a[10] = {1,3,4,2,50,3,1,30,10,20}; \/\/给数组排序,从小到大 sort(a, a+10); cout<<"最大:"<<a[9]<<", "<<"最小: "<<a[9]<<endl; cout<<"最大附近三个平均值: "<< float(a[0]+a[1]+a[2]) ...

相似回答