float* 类型的变量应该指向单个浮点数还是一系列浮点数?

zel*_*ell 5 c pointers

考虑

  float a[] = { 0.1, 0.2, 0.3};
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明

ove*_*yan 4

好问题。

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

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

在数组中,所有浮点数都连续放置在内存中。

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


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