传递数组的大小据我所知,在编译时计算和替换了一个常量的运算符。既然如此,一个函数在程序中的不同点被传递给不同的数组,它的大小如何计算?我可以将它作为参数传递给函数,但是如果我没有必要添加另一个参数的话,我宁愿不必添加另一个参数。这里有一个例子来说明我要问的问题:#include <stdio.h>#include <stdlib.h>#define SIZEOF(a) ( sizeof a / sizeof a[0] )void printarray( double x[], int );int main(){
double array1[ 100 ];
printf( "The size of array1 = %ld.\n", SIZEOF( array1 ));
printf( "The size of array1 = %ld.\n", sizeof array1 );
printf( "The size of array1[0] = %ld.\n\n", sizeof array1[0] );
printarray( array1, SIZEOF( array1 ) );
return EXIT_SUCCESS;}void printarray( double p[], int s ){
int i;
// THIS IS WHAT DOESN"T WORK, SO AS A CONSEQUENCE, I PASS THE
// SIZE IN AS A SECOND PARAMETER, WHICH I'D RATHER NOT DO.
printf( "The size of p calculated = %ld.\n", SIZEOF( p ));
printf( "The size of p = %ld.\n", sizeof p );
printf( "The size of p[0] = %ld.\n", sizeof p[0] );
for( i = 0; i < s; i++ )
printf( "Eelement %d = %lf.\n", i, p[i] );
return;}
3 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
显然,添加一个参数 将调用包装在宏中并自动添加参数 使用更复杂的对象。定义一个包含动态数组以及数组大小的结构。然后,传递结构的地址。
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
void printarray( double p[], int s )
void printarray( double p[100], int s )
void printarray( double* p, int s )
sizeof(p)
sizeof(double*)
手掌心
TA贡献1942条经验 获得超3个赞
sizeof
&
T
T
printarray
array1
double
double
p
double *
double [100]
.
T a[]
T *a
.
- 3 回答
- 0 关注
- 409 浏览
添加回答
举报
0/150
提交
取消