醉拳八哥 发表于 2015-6-8 10:56:36

关于类型说明符 (*数组名称)【长度】来定义数组指针变量的问题?

本帖最后由 醉拳八哥 于 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;
为什么呢,完全按照小甲鱼的视频来的?

哥斯拉不说话 发表于 2015-6-8 16:49:07

解决办法 1: *(*(array1+i)+j) 改为 *(*(array+i)+j)
解决办法 2: int (*array1); 改为 int (*array1)=array;

醉拳八哥 发表于 2015-6-8 17:25:36

哥斯拉不说话 发表于 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)编译的时候指向的是一个地址指针?

醉拳八哥 发表于 2015-6-8 17:28:09

另外怎么给鱼币呢,很多同学问有鱼币吗,我也觉得大家的热心回答让我很感动,想用鱼币表示一下谢意??{:1_1:}

哥斯拉不说话 发表于 2015-6-8 22:31:03

醉拳八哥 发表于 2015-6-8 17:25
也就是说 int (*array1)需要给一个初始地址是吧?可是int (*array1)定义的是一个数组啊,怎么能和 ...

你是想通过一个行指针来引用并输出一个二维数组,但你并没有让你的行指针指向任何东西,还非要它输出它所指向的地址的内容,这不是强人所难吗,人家当然不干了,至于 int (*array1) 我的理解是定义了一个指针arrary1,这个指针指向一个含有 4 个整形元素的数组,纯属个人理解,有什么错误的请原谅哈,我也是新手。{:9_240:}你问的后边两句我没看懂。{:5_100:}
页: [1]
查看完整版本: 关于类型说明符 (*数组名称)【长度】来定义数组指针变量的问题?