33,311
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
void func(int *array, int length) {
for (int i = 0; i < length; ++i) {
array[i] = i;
}
}
int main() {
const int length1 = 5;
const int length2 = 5;
int array[length1][length2];
func(array[0], length1 * length2);
for (int i = 0; i < length1; ++i) {
for (int j = 0; j < length2; ++j) {
std::cout << array[i][j] << "\t";
}
std::cout << std::endl;
}
return 0;
}
#include <stdio.h>
void func(int n, char str[ ][5] )
{
int i;
for(i = 0; i < n; i++)
printf("\nstr[%d] = %s\n", i, str[i]);
}
void main()
{
char* p[3];
char str[][5] = {"abc","def","ghi"};
func(3, str);
}
方法二,形参声明为指向数组的指针。
例如:
#include <stdio.h>
void func(int n, char (*str)[5] )
{
int i;
for(i = 0; i < n; i++)
printf("\nstr[%d] = %s\n", i, str[i]);
}
void main()
{
char* p[3];
char str[][5] = {"abc","def","ghi"};
func(3, str);
}
方法三,形参声明为指针的指针。
例如:
#include <stdio.h>
void func(int n, char **str)
{
int i;
for(i = 0; i < n; i++)
printf("\nstr[%d] = %s\n", i, str[i]);
}
void main()
{
char* p[3];
char str[][5] = {"abc","def","ghi"};
p[0] = &str[0][0];
p[1] = str[1];
p[2] = str[2];
func(3, p);
}
//根据楼主的程序改写的向一个函数传入不同的二维数组.
double* ff( double **mx, /* double* vr,*/ int m, int n)
{
/* double* vr,
double* tmv = new double [m];
for (int i= 0; i < m; i++)
{
tmv[i] = 0;
for (int j=0; j <n; j++) tmv[i] += mx[i][j]*vr[j];
} */
//
for(int i=0;i<m;i++)
{
for(int k=0;k<n;k++)
{
std::cout<<mx[i][k]<<" ";//经过预处理过的双指针,可以象使用二维数组一样使用.
//注意不要直接将二维数组强制转换为双指针传入,那样会出错的.
}
std::cout<<std::endl;
}
return 0;
}
int main()
{
//...
double aa[][5] = { 0.0, 1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0, 4.0, 5.0, 4.0, 5.0, 6.0, 7.0, 8.0 };
// double bb[5] = {5, 8, 11, 14, 17};
//要把一个确定的二维数组用双指针传入函数内部.
//需要做些处理.
int m=sizeof(aa)/sizeof(aa[0]);
int n=sizeof(aa[0])/sizeof(aa[0][0]);
double** px=new double*[m];
for(int i=0;i<m;i++)
{
px[i]=aa[i];
}
//可以用了.
double* c = ff(px ,m,n);
//...
double aa2[][7] = { 10.0, 11.0, 12.0, 13.0, 14.0, 11.0, 12.0, 13.0, 14.0, 15.0, 14.0, 15.0, 16.0, 17.0, 18.0 ,15.0, 14.0, 15.0, 16.0, 17.0, 18.0 };
int m2=sizeof(aa2)/sizeof(aa2[0]);
int n2=sizeof(aa2[0])/sizeof(aa2[0][0]);
double** px2=new double*[m2];
for(int k=0;k<m2;k++)
{
px2[k]=aa2[k];
}
ff(px2,m2,n2);
delete []px;
delete []px2;
return 0;
}