读书人

数组做参数传递有关问题

发布时间: 2013-09-17 13:35:59 作者: rapoo

数组做参数传递问题
使用一个二维数组,如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]的方式,正确。就像普通的数组一样,当然也可以用指针操作。
反正传过来的是一个数组的首地址,随便你怎么用。

读书人网 >C语言

热点推荐