在C函数中传递指向数组的指针

Smokus

我需要编写一个程序,该程序实现将数组传递给函数的3种方式。

2个函数按预期工作,但是传递指针的函数存在问题。我尝试使用Google搜索,然后进行其他测试,但是我似乎不明白这些指针应该如何工作。第一个功能应输出1、2、3。

第二个功能应输出11、12、13

第三功能应输出101、102、103

第一个和第三个功能正常工作,但是第二个功能存在问题。这是我写的:

int main(void)
{
   int iArray[3] = {100,234,567};

   f1(iArray);
   f2(iArray);
   f3(iArray);

   return EXIT_SUCCESS;
}

void f1(int ia[3]) // sized array
{
   ia[0] = 1;
   ia[1] = 2;
   ia[2] = 3;

   for (int i = 0; i < 3; i++)
   {
      printf("%d\n", ia[i]);
   }
   printf("\n");
}

void f2(int* pi) // pointer
{
   *pi = 11, 12, 13;

   printf("%d", *pi);
   printf("\n\n");

}

void f3(int ia[]) // unsized array
{
   ia[0] = 101;
   ia[1] = 102;
   ia[2] = 103;

   for (int i = 0; i < 3; i++)
   {
      printf("%d\n", ia[i]);
   }
}
一些程序员哥们

在C语言中,您不能传递数组,只能传递指向其元素的指针。这意味着对于所有参数,例如int ia[]编译器,实际上会将其视为int *ia任何潜在的“数组”大小都是无关紧要的,您所有的函数都使用精确的comeint *类型参数。

这是因为数组自然会衰减到指向其第一个元素的指针。

实际上,函数调用

f1(iArray);
f2(iArray);
f3(iArray);

实际上等于

f1(&iArray[0]);
f2(&iArray[0]);
f3(&iArray[0]);

现在针对第二个函数的问题,此行是:

*pi = 11, 12, 13

这等效于:

pi[0] = 11, 12, 13;

它使用逗号运算符,使其等效于:

pi[0] = 13;

要分配数组的每个元素,您需要为每个元素建立索引,就像使用“ array”函数一样:

pi[0] = 11;
pi[1] = 12;
pi[2] = 13;

当然,您还需要通过循环以相同的方式打印值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

指向C中数组的指针

来自分类Dev

指向C#中的函数的指针

来自分类Dev

无法“指向” C中传递的函数指针数组

来自分类Dev

在构造函数C ++中传递指向self的指针

来自分类Dev

在构造函数中传递指向对象的指针

来自分类Dev

函数返回指向C中数组类型的指针

来自分类Dev

指向函数中的结构数组的指针

来自分类Dev

将指向char数组的指针作为函数的参数传递-C

来自分类Dev

从Cython传递指向C函数的原始指针

来自分类Dev

从C ++中的函数返回指向数组的指针?

来自分类Dev

将指向数组的指针传递给函数

来自分类Dev

指向C中的int指针数组的指针

来自分类Dev

指向C ++中的函数指针的指针

来自分类Dev

指向C中内置函数的函数指针

来自分类Dev

C指向函数动态数组的指针?

来自分类Dev

将数组的指针传递给C中的函数

来自分类Dev

使用指向作为函数参数传递的数组的指针

来自分类Dev

将指向数组的指针传递给函数有什么好处?

来自分类Dev

指向函数指针数组的指针

来自分类Dev

C ++:传递数组与指向数组的指针相同吗?

来自分类Dev

指向C ++中函数的指针

来自分类Dev

Typedef指向C ++中C函数的指针

来自分类Dev

指向函数中的结构数组的指针

来自分类Dev

从C ++中的函数返回指向数组的指针?

来自分类Dev

将数组中的元素作为C函数中的指针传递

来自分类Dev

C指向函数动态数组的指针?

来自分类Dev

指向结构中数组的C指针传递给函数

来自分类Dev

为什么我不能将指向固定大小数组的指针的地址传递给需要指向 C 中指针的指针的函数?

来自分类Dev

C++:访问作为函数参数传递的双指针数组指向的变量的值

Related 相关文章

热门标签

归档