#include <stdio.h> void fun(int (*s)[10], int *b, int *n, int mm, int nn) { int i,j; for(j=0;j<nn;j

#include <stdio.h>

void fun(int (*s)[10], int *b, int *n, int mm, int nn)
{
int i,j;
for(j=0;j<nn;j++)
for(i=0;i<mm;i++)
{
((b[*n]=*(*(s+i)+j) ;
*n = *n+1;这里不懂,可以换简单的也好))
}
}

main()
{
int w[10][10] = {{33,33,33,33},{44,44,44,44},{55,55,55,55}}, i, j ;
int a[100] = {0}, n = 0 ;
FILE *out;
printf("The matrix:\n") ;
for(i = 0 ; i < 3 ; i++)
{
for(j = 0 ; j < 4 ; j++)
printf("%3d",w[i][j]) ;
printf("\n") ;
}
fun(w, a, &n, 3, 4) ;
out=fopen ("out.dat", "w");
printf("The A array:\n") ;
for(i = 0 ; i < n ; i++)
{
printf("%3d",a[i]);
fprintf(out, "%d\n",a[i]);
}
printf("\n\n") ;
fclose (out );
}

#include <stdio.h>

void fun(int (*s)[10], int *b, int *n, int mm, int nn)
{
int i,j;
for(j=0;j<nn;j++)
for(i=0;i<mm;i++)
{
b[*n]=*(*(s+i)+j) ;//这里b是一个指向一维数组的指针,因为形参中n为指针,为引用传值,所以要加*
//把第i行j列的元素存储到b[*n]中
*n = *n+1;//这里不懂,可以换简单的也好))
}
}

main()
{
int w[10][10] = {{33,33,33,33},{44,44,44,44},{55,55,55,55}}, i, j ;
int a[100] = {0}, n = 0 ;
FILE *out;
printf("The matrix:\n") ;
for(i = 0 ; i < 3 ; i++)
{
for(j = 0 ; j < 4 ; j++)
printf("%3d",w[i][j]) ;
printf("\n") ;
}
fun(w, a, &n, 3, 4) ;
out=fopen ("out.dat", "w");
printf("The A array:\n") ;
for(i = 0 ; i < n ; i++)
{
printf("%3d",a[i]);
fprintf(out, "%d\n",a[i]);
}
printf("\n\n") ;
fclose (out );
}

改成以下可能好理解点

int n=0;

void fun(int (*s)[10], int *b, int mm, int nn)
{

int i,j;
for(j=0;j<nn;j++)
for(i=0;i<mm;i++)
{
b[n]=*(*(s+i)+j)
n = n+1;
}
}
main()
{
int w[10][10] = {{33,33,33,33},{44,44,44,44},{55,55,55,55}}, i, j ;
int a[100] = {0} ;
FILE *out;
printf("The matrix:\n") ;
for(i = 0 ; i < 3 ; i++)
{
for(j = 0 ; j < 4 ; j++)
printf("%3d",w[i][j]) ;
printf("\n") ;
}
fun(w, a, 3, 4) ;
out=fopen ("out.dat", "w");
printf("The A array:\n") ;
for(i = 0 ; i < n ; i++)
{
printf("%3d",a[i]);
fprintf(out, "%d\n",a[i]);
}
printf("\n\n") ;
fclose (out );
}
把n定义成一个全局变量,就不用弄个引用传参了
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-18
((b[*n]=*(*(s+i)+j) ;
*n = *n+1;这里不懂,可以换简单的也好))

b[*n] = s[i][j];
(*n)++;
第2个回答  2010-09-19
地球很危险,快回你们自己的星球吧
第3个回答  2010-09-26
b

#include <stdio.h> void fun(int a, int b, long *c) {int n,m,g...
c=1000*g+100*n=10*h+m;\/\/不是等号吧?

#include<stdio.h> void fun(int *a,int *b) {int *c; c=a;a=b;b=...
include<stdio.h> void fun(int *a,int *b){ int *c;c=a;a=b;b=c;} main(){ int x=3,y=5,*p=&x,*q=&y;fun(p,q);printf("%d,",*p,*q);fun(&x,&y);printf("%d,%d\\n",*p,*q);return 0;}

#include <stdio.h> void fun(int*a, int*
深度解析:写这个函数毫无意义,应该不是写程序人的本意,其本意似要交换M与N的值。那就要这样写:int *t;t=*a;a=*b;b=*t;或者稍简单一点:int t;t=*a;a=*b;b=t;不知分析的对不对。不明白之处,请留言。

#include <stdio.h> int func(int x,int *p); void main( ) { int...
func作用是将传入的第二个参数改为x+2+1=x+3,并返回2x+2+2=2x+4,所以 int a=1,b=2,c;c=func(a,&b); \/\/这句执行后b=a+3=4 c=2*a+4=6 b=func(c,&b);\/\/同上,b=2*6+4=16 a=func(b,&c);\/\/ c=16+3=19 a=2*16+4=36 即abc分别为36 16 19 ...

#include<stdio.h> int fun(int n,int *s){int f1,f2;if(n==1IIn==...
你这个函数写得不够简练,不好理解,看我这个吧 int fun(int n){ if(n<=2)return 1;return fun(n-1)+fun(n-2);} 求第n个的值,如果n=1或者n=2就返回1,否则返回第n-1个和第n-2个的和 这样函数递归的调用,最终求出结果.比如:调用fun(6) return fun(5)+fun(4);即fun(6)=...

c语言#include <stdio.h> void fun (int a[],int n){int i,t;for(i=...
觉得这个是传指针的吧, 就是传地址. int a[], 和int * a,一样吧.

#include <stdio.h> fun(int x) {int n,s1,s2,s3,t;} n=0; t=100...
没有main()函数,fun()函数也没写完整,不知道你要表达的是什么意思。

#include <stdio.h> void fun (int, int); void main (void) { int...
fun()应该是个函数,程序中单独调用的函数!你的程序不完整,没用定义fun()函数!

#include <stdio.h> #include <string.h> void fun(char *w,int n...
有三次循环的过程。fun函数在s1<s2时,将指针s1指向的值取出送t,然后指针加1,再将s2指向的值取出,送加1后的s1指向的地址,最后将t中内容,即原来s1所指向内容送减1后的s2指向地址。一共循环执行三次。第1次循环:t='1' ,s1指向第二位数所在地址,内容变成'7’,s2指向倒数第二位数,内容...

#include<stdio.h> void fun(int*a,int*b) {int*c; c=a;a=b;b=c;}...
所以p和q仍然分别指向x和y。再回到fun函数中,可以看出,a和b的值(x和y的地址)是交换了,也即是说a原本指向x,现在指向了y,对应的b改为指向x。但这只能说a和b间有变化。会影响到x和y吗?也不会。所以fun函数其实对x,y,p,q没有产生任何的影响,当然结果就应该是3,5,3,5了。希望你...

相似回答
大家正在搜