首页 > 解决方案 > float* 类型的变量应该指向单个浮点数还是一系列浮点数?

问题描述

考虑

  float a[] = { 0.1, 0.2, 0.3};

a我对后来传递给函数的事实感到非常困惑foo(float* A)。类型变量不应该float*指向单个浮点数,对吗?就像本教程中提到的一样

在此处输入图像描述

标签: cpointers

解决方案


好问题。

float * 确实指向单个浮点值。

但是,在 C 中,您可以进行指针运算。因此,当您从第一个指针获取值时,您实际上可以转到内存中的下一个浮点数。

在一个数组中,所有的浮点数都在内存中连续布局。

因此,为了访问整个数组,您只需要获取指向数组中第一个元素的指针并迭代直到数组末尾。这就是为什么数组的大小也与指向数组第一个元素的指针一起传递给函数的原因。


void do_stuff(float * a, int n)
{
  for(int i=0; i<n; ++i)
  {
     do_stuff_with_current_element(a[i]);
  }
}

推荐阅读