首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >*p[5]和(*p)[5]之间有什么区别?

*p[5]和(*p)[5]之间有什么区别?
EN

Stack Overflow用户
提问于 2017-07-29 10:12:59
回答 4查看 5.6K关注 0票数 3

在查看指针示例时,我遇到了一条线,即*p[5]p声明为一个由5个指针组成的数组,而(*p)[5]则将p声明为一个指向五个元素数组的指针。我不明白他们之间的区别。

有人能举个例子解释一下吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-07-29 10:17:21

(*p)[5] 1. int

称为指针,用于数组(数组指针)。当谈到多维数组时,我们可以声明一个指针,它可以指向整个数组,而不是array.This指针的一个元素。

在本例中,p是指针,可以指向由5个整数组成的数组。

代码语言:javascript
复制
/*Pointer to an array*/
#include<stdio.h>
int main(void)
{
    int *ptr; /*can point to an integer*/
    int (*p)[5];/*can point to an array of 5 integers*/
    int arr[5];
    ptr=arr;/*points to 0th element of arr*/
    p=&arr;/*points to the whole array arr*/
    printf("ptr=%p,p=%p\n",ptr,p);
    ptr++;
    p++;
    printf("ptr=%p,p=%p\n",ptr,p);
    return 0;
}
Output: 
ptr=0012FEAC,p=0012FEAC
ptr=0012FEB0,P=0012FEC0

这里,ptr是指向数组arr的第0元素的指针,而p是指向整个数组arr.The的指针,ptr的基类型是int,而基类型p是‘一个5个整数的数组’。

我们知道指针算法是相对于基本大小执行的,因此如果我们编写p++,指针将向前移动20个字节。

*p[5]**:** 2.现在来到

这被称为指针的数组(指针数组)

正确的语法是数据类型*数组大小;

我们可以声明一个包含指针的数组,因为它的elements.Every元素是一个指针变量,可以保存任何类型的变量的地址。

代码语言:javascript
复制
/*Array of pointers*/
#include<stdio.h>
int main(void)
{
    int *p[5];
    int i,a=5,b=10,c=15;
    p[0]=&a;
    p[1]=&b;
    p[2]=&c;
    for(i=0;i<3;i++)
    {
        printf("p[%d]=%p\t",i,p[i]);
        printf("*p[%d]=%d\n",i,*p[i]);
    }
    return 0;
}
Output:
p[0]=0012FEB4   *p[0]=5
p[1]=0012FEA8   *p[1]=10
p[2]=0012FE9C   *p[2]=15

我希望这个解释和例子将澄清你的概念。

希望这是有帮助的:)

票数 9
EN

Stack Overflow用户

发布于 2017-07-29 11:02:18

评价的顺序不同。*p[3]决定为*(p[3]),而不是(*p)[3]。还请注意,*p等同于p[0]。所以..。

  • *p[3]*(p[3])(p[3])[0] p[3][0]
  • (*p)[3](p[0])[3]p[0][3]

假设您有一个数组,则区别如下:

票数 1
EN

Stack Overflow用户

发布于 2017-07-29 10:20:09

指针就像一个便条,你把实际的对象写在上面。

数组是一个具有相同间隔的盒子。它可以存储相同类型的对象。

你有三个球。

一个由三个指针组成的数组是一个包含三个贴纸的盒子。每个标签告诉每个球的位置(它们可能并不都在同一个地方)。

指向由三个元素组成的数组的指针是一个粘稠的便笺,它指示在哪里找到该框。盒子里装着所有的树球。

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

https://stackoverflow.com/questions/45388011

复制
相关文章

相似问题

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