关于类型说明符 (*数组名称)【长度】来定义数组指针变量的问题?
本帖最后由 醉拳八哥 于 2015-6-8 14:39 编辑#include <stdio.h>
int compare(int,int);
void main ()
{
int array={1,2,3,4,5,6,7,8,9,10,11,12};
int (*array1);
int i,j;1211377599
printf("input i=");
scanf("%d",&i);
i=compare(i,3);
printf("input j=");
scanf("%d",&j);
j=compare(j,4);
printf("the num =%d",*(*(array1+i)+j));
}
int compare(int i,int j)
{
while (i<0 || i>j)
{
printf("piease input again\n ");
scanf("%d",&i);
}
return (i);
}
提示C:\Program Files\Microsoft Visual Studio\MyProjects\44\44.c(15) : warning C4700: local variable 'array1' used without having been initialized;
为什么呢,完全按照小甲鱼的视频来的?
解决办法 1: *(*(array1+i)+j) 改为 *(*(array+i)+j)
解决办法 2: int (*array1); 改为 int (*array1)=array; 哥斯拉不说话 发表于 2015-6-8 16:49
解决办法 1: *(*(array1+i)+j) 改为 *(*(array+i)+j)
解决办法 2: int (*array1); 改为 int (*array1 ...
也就是说 int (*array1)需要给一个初始地址是吧?可是int (*array1)定义的是一个数组啊,怎么能和地址等价呢?是不是说int array【】编译的时候指向一个固定空间,而int (*array1)编译的时候指向的是一个地址指针? 另外怎么给鱼币呢,很多同学问有鱼币吗,我也觉得大家的热心回答让我很感动,想用鱼币表示一下谢意??{:1_1:} 醉拳八哥 发表于 2015-6-8 17:25
也就是说 int (*array1)需要给一个初始地址是吧?可是int (*array1)定义的是一个数组啊,怎么能和 ...
你是想通过一个行指针来引用并输出一个二维数组,但你并没有让你的行指针指向任何东西,还非要它输出它所指向的地址的内容,这不是强人所难吗,人家当然不干了,至于 int (*array1) 我的理解是定义了一个指针arrary1,这个指针指向一个含有 4 个整形元素的数组,纯属个人理解,有什么错误的请原谅哈,我也是新手。{:9_240:}你问的后边两句我没看懂。{:5_100:}
页:
[1]