#include<stdio.h>
int main()
{
int N, i,j,k;
int uglyNumber[1500]={1};
int *i=uglyNumber;
int *j=uglyNumber;
int *k=uglyNumber;
while(scanf("%d",&N)!=EOF)
printf("%d\n",uglyNumber[N]);
}
产生编译器错误:
int differs in levels of indirection from int *
为什么我不能使用指针引用数组uglyNumber[]
?
答案 0 :(得分:5)
我认为您收到了错误,因为您定义了i
,j
,k
两次。代码的其他部分应该运行。
答案 1 :(得分:2)
不会编译。
您已将i,j,k
声明为int。
因此,您无法声明*i,*j,*k
。
将*i,*j,*k
更改为*ii,*jj,*kk
。已编译并可以运行。
答案 2 :(得分:0)
指针i,j&amp; k应该只指向数组的一个元素,即uglyNumber [0],uglyNumber [1]&amp;等...... ..
指针也是一个存储数组元素地址的变量。要存储,您必须使用&amp;符号即* i =&amp; uglyNumber [0]
答案 3 :(得分:-1)
请检查您是否初始化了N的值。它可能是一个垃圾。