gol*_*ean 6 c pointers multidimensional-array
我的函数main中有一个在我的C代码中动态分配的二维数组.我需要将这个2D数组传递给一个函数.由于数组的列和行是运行时变量,我知道传递它的一种方法是:
- 传递行和列变量以及指向数组的[0] [0]元素的指针
myfunc(&arr[0][0],rows,cols)
Run Code Online (Sandbox Code Playgroud)
然后在被调用函数中,将其作为'flattened out'一维数组访问,如:
ptr[i*cols+j]
Run Code Online (Sandbox Code Playgroud)
但是我不希望这样做,因为这意味着代码会发生很多变化,因为之前传递给此函数的2D数组是静态分配的,其编码时已知其维度.
那么,我如何将2D数组传递给函数,并且仍然能够将其用作具有2个索引的2D数组,如下所示?
arr[i][j].
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
#include <stdio.h>
#include <stdlib.h>
void doit(int ** s , int row , int col )
{
for(int i =0 ; i <col;i++){
for(int j =0 ; j <col;j++)
printf("%d ",s[i][j]);
printf("\n");
}
}
int main()
{
int row =10 , col=10;
int ** c = (int**)malloc(sizeof(int*)*row);
for(int i =0 ; i <col;i++)
*(c+i) = (int*)malloc(sizeof(int)*row);
for(int i =0 ; i <col;i++)
for(int j =0 ; j <col;j++)
c[i][j]=i*j;
doit(c,row,col);
}
Run Code Online (Sandbox Code Playgroud)
希望这是你想要的方式....
归档时间: |
|
查看次数: |
11010 次 |
最近记录: |