d**********o 发帖数: 11 | 1 void func(int []a)
还是
void func(int a[]) ?
两种我都见过
有啥区别没有? |
e*******s 发帖数: 1067 | |
d**********o 发帖数: 11 | 3 另外一种我在书上也见过的
就是不知道啥区别
【在 e*******s 的大作中提到】 : void func(int a[])
|
s**x 发帖数: 7506 | 4 第一个是java 的吧?c 里面世纪上没有数组参数这个概念,就是一指针.
Void f(int *a)
Void f(int a[]) 应该是等价的。
★ 发自iPhone App: ChineseWeb 7.8
【在 d**********o 的大作中提到】 : void func(int []a) : 还是 : void func(int a[]) ? : 两种我都见过 : 有啥区别没有?
|
r**h 发帖数: 1288 | 5 上面是java,下面是c
java和c挺容易搞混的其实
【在 d**********o 的大作中提到】 : void func(int []a) : 还是 : void func(int a[]) ? : 两种我都见过 : 有啥区别没有?
|
a**********3 发帖数: 64 | 6 应该没啥区别,function里面一般都是方括号写后面比较常见,写前面的我只在java
declaration的时候看到。
不过C++里面一般都用pointer int * arr这样子。
【在 d**********o 的大作中提到】 : 另外一种我在书上也见过的 : 就是不知道啥区别
|
b******7 发帖数: 92 | 7 数组作参数要带上长度
void func(int a[],size_t len)
c/c++不能直接用参数传递数组,而将其转化为指针传递
上面的定义等价于void func(int * a,size_t len)
测试如下的case就可知道
void func(int a[], size_t len)
{
cout<
}
int main()
{
int a[] = {1,2};
cout<
func(a,sizeof(a)/sizeof(int));
return 0;
} |
d**********x 发帖数: 4083 | 8 c++一般都用const vector&吧
或者用这玩意:
#include
using namespace std;
template
void foo(int (&arr)[N]) {
cout << N << endl;
cout << sizeof(arr) << endl;
}
int main() {
int a[10];
foo(a);
return 0;
}
【在 b******7 的大作中提到】 : 数组作参数要带上长度 : void func(int a[],size_t len) : c/c++不能直接用参数传递数组,而将其转化为指针传递 : 上面的定义等价于void func(int * a,size_t len) : 测试如下的case就可知道 : void func(int a[], size_t len) : { : cout<: } : int main()
|
b***m 发帖数: 5987 | |
a****s 发帖数: 559 | 10 一般传指针和长度两个参数。
void func(int a[], size_t len)
调用时,数组参数decay成int*指针。
如果要在函数里保留参数的数组特性,
可以传array by reference
void func( int (& a)[10] )
或者传array by pointer
void func( int (* a)[10] )
限制是:数组size需要明确定义。
如果要从函数返回数组,同样
可以return by reference
int (& func())[10]
也可以return by pointer
int (* func())[10]
同样限制,需要明确定义数组size。 |