我做了一个代码
#include <iostream>
#include<conio.h>
using namespace std;
void main()
{
int *x,*y;
x=new int[1];
y=new int;
cin>>y; //Gives error probably because y is a pointer and not a variable
cin>>*y //works fine
cin>>x[0]>>x[1];
cout<<x[0]<<x[1];
cout<<*x[0]; //gives error
cout<<y;
cout<<*y;
getch();
}让error.why?I记住,我声明了x是一个指针数组,现在我做了和*y.Does一样的事情,这意味着指针数组变成了变量?请帮助!
发布于 2013-03-21 12:55:34
您实际对该行代码所做的操作类似于:
cout<<**x;因为使用x[0]会取消对x的0th元素的引用。
从您对x的定义中可以看出,x只是一个指针,而不是指向指针的指针,因此两次取消引用它将不起作用,因为您正在尝试取消引用一个变量。
台词是什么:
x=new int[1];实际上只是说“给这个指针分配一个整数数组,大小为1”,这只会让x指向一个足够存储1个整数的内存块。
发布于 2013-03-21 12:55:00
X是指向int的指针。您已经分配了一个int数组,它是一个整型长整型数组。因此,x是一个整数,而*x是一个整数。然而,*x意味着你在说x是一个你要取消引用的指针。然而,它不是一个指针,它是一个int。这就是出现错误的原因。
发布于 2013-03-21 12:58:43
数组的含义:
x[0]等价于*(x+0);
正如你所知道的,array is array只不过是它根目录中的指针。
因此,任何包含xa或xa的数组都可以扩展为
*(x+a) or *(*(x+a)+b)基于此,我希望你能找到你的答案。
https://stackoverflow.com/questions/15539733
复制相似问题