首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指针和指针数组之间的区别

指针和指针数组之间的区别
EN

Stack Overflow用户
提问于 2013-03-21 12:50:03
回答 3查看 165关注 0票数 2

我做了一个代码

代码语言:javascript
复制
#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一样的事情,这意味着指针数组变成了变量?请帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-21 12:55:34

您实际对该行代码所做的操作类似于:

代码语言:javascript
复制
cout<<**x;

因为使用x[0]会取消对x0th元素的引用。

从您对x的定义中可以看出,x只是一个指针,而不是指向指针的指针,因此两次取消引用它将不起作用,因为您正在尝试取消引用一个变量。

台词是什么:

代码语言:javascript
复制
x=new int[1];

实际上只是说“给这个指针分配一个整数数组,大小为1”,这只会让x指向一个足够存储1个整数的内存块。

票数 1
EN

Stack Overflow用户

发布于 2013-03-21 12:55:00

X是指向int的指针。您已经分配了一个int数组,它是一个整型长整型数组。因此,x是一个整数,而*x是一个整数。然而,*x意味着你在说x是一个你要取消引用的指针。然而,它不是一个指针,它是一个int。这就是出现错误的原因。

票数 1
EN

Stack Overflow用户

发布于 2013-03-21 12:58:43

数组的含义:

代码语言:javascript
复制
x[0]

等价于*(x+0);

正如你所知道的,array is array只不过是它根目录中的指针。

因此,任何包含xa或xa的数组都可以扩展为

代码语言:javascript
复制
*(x+a) or *(*(x+a)+b)

基于此,我希望你能找到你的答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15539733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档