标题:使用calloc 編譯錯誤:下標要求數組或者指針類型?
只看楼主
xiestone1992
Rank: 1
等 级:新手上路
帖 子:19
专家分:3
注 册:2012-2-8
结帖率:33.33%
已结贴  问题点数:20 回复次数:5 
使用calloc 編譯錯誤:下標要求數組或者指針類型?
main function沒問題,我是使用main function接受參數的方法得到整數size 的,總之我只是不會怎麼用calloc。就是用calloc分配內存之後,怎麼使用這個數組?



void flip_h(int * * arr, int size){
   char * arr2 ;//聲明一個char類型指針
  

   int r, c,r1,c1;
  
   arr2 = (char * )calloc (size , size); //分配一個size * size 那麼大的內存
  

   r = r1 = 0;
   c = c1 = 0;  
     while(r<size) {
       c=0;c1=0;
       while(c < size){
        arr2[r1][c1++]=arr[r][c++];//編譯錯誤:下標要求數組或者指針類型?
       }
       r++;
       r1++;
    }
   
   r=0;
   r1=0;
   c=0;
   c1=size-1;
   while(r<size) {
       c=0;c1=size-1;
       while(c<size){
       arr[r][c++]=arr2[r1][c1--];  //編譯錯誤:下標要求數組或者指針類型?
       }
       r++;
       r1++;
    }
  return;
  free( arr2);
}
搜索更多相关主题的帖子: function 
2012-05-05 23:21
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
得分:7 
你可以使用指针来访问二维数组。

我们都在路上。。。。。
2012-05-06 11:03
love24114
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:223
专家分:399
注 册:2011-7-11
得分:7 
为什么不试试arr2[r1*size + c1++]=arr[r*size + c++]呢;
2012-05-06 11:06
love24114
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:223
专家分:399
注 册:2011-7-11
得分:0 
因为一个是指针,你那个用方法的就属于二维数组了,而calloc分配的并不属于二维数组。
只是分配的一段内存。
这样的话,编译器就不知道 a[1][0]是数组中第几个数
2012-05-06 11:09
xiestone1992
Rank: 1
等 级:新手上路
帖 子:19
专家分:3
注 册:2012-2-8
得分:0 
回复 4楼 love24114
可是奇怪就是奇怪在這裡,arr是在另一個function裏面定義好的,代碼如下


int ** create_array(int size){
  int j ;
  size_t s = (size_t) size;
  int ** arr = (int **) calloc(sizeof(int *), size);
  if(arr != NULL)
    for(j=0; j<size; j++)
      arr[j]=(int *)calloc(sizeof(int), size);
  return arr;
}



當我用 char arr2[5][5]來聲明一個二維數組的時候,卻可以編譯成功?說明arr已經可以被當做一個二維數組啦,我的問題就是這麼讓arr2也可以這樣?
2012-05-06 14:03
xiestone1992
Rank: 1
等 级:新手上路
帖 子:19
专家分:3
注 册:2012-2-8
得分:0 
問題得到解決了,我自己明白了,謝謝大家
2012-05-06 14:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-367027-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.867960 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved