作者PanJC ((#‵Д′)f〒﹌﹌﹌﹌﹌ꄩ
看板NCTU-STAT100
標題[閒聊] 二維陣列傳遞的方法
時間Wed Aug 3 14:40:25 2011
#include <stdio.h>
#include <stdlib.h>
void f1(float (*a)[2], int m, int n);
void f2(float **a, int m, int n);
void f3(float (*a)[2], int m);
void f4(float a[][2], int m);
int main(){
float z[4][2] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0};
printf("&z: %p\n",&z);
printf("&z[0]: %p\n",&z[0]);
printf("&z[0][0]: %p\n",&z[0][0]);
printf("z: %p\n",z);
printf("z+1: %p\n",z+1);
f1(z, 4, 2);
float **b;
b = (float **)malloc(4*sizeof(float *));
*b = (float *)malloc(4*2*sizeof(float));
int i,j ;
for( i = 0; i < 4 ; i++)
*(b+i) = *b + 2*i;
printf("\nf1:\n");
for( i = 0 ; i < 4 ; i++ ){
for( j = 0 ; j < 2 ; j++ ){
b[i][j]=z[i][j];
}
}
f2(b, 4, 2);
free(*b);
free(b);
float **c;
c = (float **)malloc(4*sizeof(float *));
printf("\nf2:\n");
for( i = 0 ; i < 4 ; i++ )
*(c+i)=z[i];
f2(c, 4, 2);
free(c);
printf("\nf3:\n");
f3(z,4);
printf("\nf4:\n");
f4(z,4);
}
void f4(float a[][2], int m){
int i,j;
int n;
n = sizeof(a[0])/sizeof(a[0][0]);
printf("n = %d\n",n);
for( i = 0 ; i < m ; i++ ){
for( j = 0 ; j < n ; j++ ){
printf("%f\t", a[i][j]);
}
printf("\n");
}
}
void f3(float (*a)[2], int m){
int i,j;
int n;
n = sizeof(a[0])/sizeof(a[0][0]);
printf("n = %d\n",n);
for( i = 0 ; i < m ; i++ ){
for( j = 0 ; j < n ; j++ ){
printf("%f\t", a[i][j]);
}
printf("\n");
}
}
void f2(float **a, int m, int n){
int i,j;
for( i = 0 ; i < m ; i++ ){
for( j = 0 ; j < n ; j++ ){
printf("%f\t", a[i][j]);
}
printf("\n");
}
}
void f1(float (*a)[2], int m, int n){
int i,j;
for( i = 0 ; i < m ; i++ ){
for( j = 0 ; j < n ; j++ ){
printf("%f\t", a[i][j]);
}
printf("\n");
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.7.248