首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数组做参数传递有关问题

2013-09-17 
数组做参数传递问题使用一个二维数组,如B[4][65536]。想把数组第三行作为实参,也就是B[3][65536]。如何设计

数组做参数传递问题
使用一个二维数组,如B[4][65536]。想把数组第三行作为实参,也就是B[3][65536]。如何设计函数的实参和形参?

急求。谢谢大家
[解决办法]
type B[4][65536];

int func(type arrayB[65536])
int func(type *ptr, int len)

func(&B[3][0]);
func(B[3], 65536);
[解决办法]

typedef int TYPE_ARRAY[65536];

void fun(TYPE_ARRAY arr)
{
}

int main()
{
int T_arr[4][65536] = {0};
fun(T_arr[3]);
return 0;
}

[解决办法]


void test_fun(int *arr)
{
 //do something
}

 int B[4][65536];
test_fun(&B[3][0]);


[解决办法]
形参用指针,比如 int* arr ,再给一个size长度参数,然后就像用一维的数组那样使用。
函数调用的时候传入 B[3],65536就可以。
#include <iostream>
#include <iterator>
using namespace std;

void func(int* array, size_t n)
{
copy(array, array + n, ostream_iterator<int>(cout, " "));
cout << endl;
}

int main()
{
int array[3][10] = {0};
for (int i = 0; i < 10; i++)
array[2][i] = i;
func(array[2], 10);
return 0;
}

[解决办法]
引用:
Quote: 引用:

形参用指针,比如 int* arr ,再给一个size长度参数,然后就像用一维的数组那样使用。
函数调用的时候传入 B[3],65536就可以。
#include <iostream>
#include <iterator>
using namespace std;

void func(int* array, size_t n)
{
copy(array, array + n, ostream_iterator<int>(cout, " "));
cout << endl;
}

int main()
{
int array[3][10] = {0};
for (int i = 0; i < 10; i++)


array[2][i] = i;
func(array[2], 10);
return 0;
}



就像这样:a=(unsigned short)countbit(B[3],65536);

unsigned short countbit(unsigned long *p, int length)
{
int i;
unsigned short onebitnum=0;
for(i=0;i<65536;i++)
{
if(p[i]==1)//这里是否正确
onebitnum=onebitnum+1;
}
return 65536-onebitnum;
}

可以用p[i]的方式,正确。就像普通的数组一样,当然也可以用指针操作。
反正传过来的是一个数组的首地址,随便你怎么用。

热点排行