c - float* 类型的变量应该指向单个 float 还是一系列 float ?

标签 c pointers

考虑

  float a[] = { 0.1, 0.2, 0.3};
我很困惑a稍后传递给函数 foo(float* A) .不应该是 float* 类型的变量指向单个浮点数,对吗?就像这里提到的tutorial
enter image description here

最佳答案

好问题。float * 指向单个浮点值。
但是,在 C 中,您可以进行指针运算。所以,当你从第一个指针中得到值时,你实际上可以去到下一个 漂浮在内存中。
在一个数组中,所有的浮点数都在内存中连续排列。
因此,为了访问整个数组,您只需要获取指向数组中第一个元素的指针并迭代到数组末尾。这就是为什么数组的大小也与指向数组第一个元素的指针一起传递给函数的原因。


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

关于c - float* 类型的变量应该指向单个 float 还是一系列 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64957266/

相关文章:

c - 在 char* 数组中存储字符串时出错

c - 如何使用标记合并##运算符合并数组元素???

c++ - C 或 C++ 链接器中是否有任何类型检查?

pointers - 使用 Swift 为没有指针的 KVO 添加观察者

c - 不兼容的指针类型错误、sws_scale、ffmpeg

c - 打印 (Char*)(Void*) 在主程序中有效,但在函数中无效

c - 带有预处理器指令的指针

计算机之间的 C 目标文件兼容性

c - 将指针地址存储在分配的内存中

c - 如何在 Pascal/Delphi 中调用以下 C 函数?