御笔剑客 发表于 2018-5-15 09:57:31

数组指针可以这样用吗?

#include<stdio.h>
#include<stdlib.h>
void main()
{
    //数组指针的用法,用处。
    int b={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
    int (*p); //该语句是定义一个数组指针,指针步长为4个int即16位。
    //int *p2=b;
    p=b;
    int i=0;
    while(i<16)
    {
          printf("%d\t",(*p));
          //printf("%d\t",*p2++);
          i++;
    }
}

看到一篇博客,将指向二维数组的指针用来指向一维数组,博客上写的能正常输出,而我这里显示error: cannot convert 'int ' to 'int (*)' in assignment|

BngThea 发表于 2018-5-15 10:04:30

数组指针应该指向的是一个二维数组吧,要不然如何知道另一维的长度呢

风过无痕丶 发表于 2018-5-15 10:29:53


你的编译器真的很严格哦。。
printf("%d\t",(*p)); // 原则上来说这里对p解了一次, 那么他的步长就只有一个int的大小,
为什么报错,我觉得可能是 int * 和 int ** 的差别吧。

人造人 发表于 2018-5-15 13:19:19

风过无痕丶 发表于 2018-5-15 10:29
你的编译器真的很严格哦。。

为什么报错,我觉得可能是 int * 和 int ** 的差别吧。

我认为他使用的是c++环境

风过无痕丶 发表于 2018-5-15 15:28:18

人造人 发表于 2018-5-15 13:19
我认为他使用的是c++环境

大佬说得在理

Romeo 发表于 2018-5-19 00:09:29

c++环境也不行
error: assigning to 'int (*)' from incompatible type 'int '
直接用指针也可以,不用数组指针

Neverturnback 发表于 2018-5-22 22:31:34

把文件后缀名cpp改成c就行了,改成c就只会在warning中提醒,不会再error中提醒,就能正常输出了
页: [1]
查看完整版本: 数组指针可以这样用吗?