C 我有类似的代码,我想知道如何获得我传入的数组的元素数,如果有办法的话
所以int size实际上并没有给出我在主函数中传递的内容的大小。如何获得传入的数组中元素的确切数目C 我有类似的代码,我想知道如何获得我传入的数组的元素数,如果有办法的话,c,pointers,sizeof,C,Pointers,Sizeof,所以int size实际上并没有给出我在主函数中传递的内容的大小。如何获得传入的数组中元素的确切数目 void myFunc(int *array) { int size = (sizeof(&array)/sizeof(int));} int main() { int array[]={1,2,3,4,5,6,7,8,9,10,11,12,13}; myfunc(&array); return 0; } 函数无法神奇地知道,因此通常会解决以下问题: void myF
void myFunc(int *array)
{ int size = (sizeof(&array)/sizeof(int));}
int main()
{
int array[]={1,2,3,4,5,6,7,8,9,10,11,12,13};
myfunc(&array);
return 0;
}
函数无法神奇地知道,因此通常会解决以下问题:
void myFunc(int *array, int size)
{
int i;
for(i=0;i<size;++i)
array[i] = i;
}
#define ARRSZ(arr) arr, sizeof(arr)/sizeof(*arr)
int main()
{
int array[] = {1,2,3,4,5,6,7,8,9,10,11,12,13};
myFunc( ARRSZ(array) );
return 0;
}
void myFunc(int*数组,int大小)
{
int i;
对于(i=0;i,函数无法神奇地知道,因此它通常是通过以下方式解决的:
void myFunc(int *array, int size)
{
int i;
for(i=0;i<size;++i)
array[i] = i;
}
#define ARRSZ(arr) arr, sizeof(arr)/sizeof(*arr)
int main()
{
int array[] = {1,2,3,4,5,6,7,8,9,10,11,12,13};
myFunc( ARRSZ(array) );
return 0;
}
void myFunc(int*数组,int大小)
{
int i;
对于(i=0;i将其作为参数传递给myFunc
#include <stdio.h>
void myFunc(int *array, size_t size)
{
printf("Size = %zu\n", size);
for (size_t i=0; i<size; i++)
{
printf("array[%zu] = %d\n", i, array[i]);
}
}
int main(void)
{
int array[]={1,2,3,4,5,6,7,8,9,10,11,12,13};
myFunc(array, sizeof(array)/sizeof(array[0]));
return 0;
}
#包括
void myFunc(int*数组,大小\u t大小)
{
printf(“大小=%zu\n”,大小);
对于(size_t i=0;i将其作为参数传递给myFunc
#include <stdio.h>
void myFunc(int *array, size_t size)
{
printf("Size = %zu\n", size);
for (size_t i=0; i<size; i++)
{
printf("array[%zu] = %d\n", i, array[i]);
}
}
int main(void)
{
int array[]={1,2,3,4,5,6,7,8,9,10,11,12,13};
myFunc(array, sizeof(array)/sizeof(array[0]));
return 0;
}
#包括
void myFunc(int*数组,大小\u t大小)
{
printf(“大小=%zu\n”,大小);
对于(size_t i=0;i您可以在函数中添加一个参数来表示元素的数量。还请注意,在main
函数中,使用&array
可以获得int(*)类型的内容[13]
。与您希望函数接收的int*
不完全相同。如果编译器没有发出警告,请启用更多警告。并将警告视为错误。好消息是,修复起来很简单:不要在数组上使用运算符的地址。使用纯array
将导致数组衰退指向指向第一个元素(正确类型)的指针。您可以向函数中添加一个参数来表示元素的数量。还请注意,在main
函数中,使用&array
可以获得int(*)类型的内容[13]
。与您希望函数接收的int*
不完全相同。如果编译器没有发出警告,请启用更多警告。并将警告视为错误。好消息是,修复起来很简单:不要在数组上使用运算符的地址。使用纯array
将导致数组衰退指向第一个元素(正确类型)的指针。为什么#定义ARRSZ(arr)arr、sizeof(arr)/sizeof(*arr)
而不是#定义ARRSZ(arr)sizeof(arr)/sizeof(*arr)
sizeof
返回size\u t
notint
@MichaelWalz,因为它将整个调用参数替换为myFunc
。至少很奇怪。@sp2danny,知道了,但它真的很奇怪。为什么定义ARRSZ(arr)arr,sizeof(arr)/sizeof(*arr)
而不是定义ARRSZ(arr)sizeof(arr)/sizeof(*arr)
sizeof
返回size\u t
notint
@MichaelWalz,因为它将整个调用参数替换为myFunc
。至少很奇怪。@sp2danny,知道了,但真的很奇怪。