c - float* 类型的变量应该指向单个浮点数还是一系列浮点数?
问题描述
考虑
float a[] = { 0.1, 0.2, 0.3};
a
我对后来传递给函数的事实感到非常困惑foo(float* A)
。类型变量不应该float*
指向单个浮点数,对吗?就像本教程中提到的一样
解决方案
好问题。
float *
确实指向单个浮点值。
但是,在 C 中,您可以进行指针运算。因此,当您从第一个指针获取值时,您实际上可以转到内存中的下一个浮点数。
在一个数组中,所有的浮点数都在内存中连续布局。
因此,为了访问整个数组,您只需要获取指向数组中第一个元素的指针并迭代直到数组末尾。这就是为什么数组的大小也与指向数组第一个元素的指针一起传递给函数的原因。
void do_stuff(float * a, int n)
{
for(int i=0; i<n; ++i)
{
do_stuff_with_current_element(a[i]);
}
}
推荐阅读
- json - 使用 jq 从数组中选择特定项目
- angular - 角度 2+ 中的掩码数到哈希格式
- laravel-nova - Laravel Nova Action - 附加多个数据透视记录
- excel - 使用 Google Maps API 密钥计算 Excel 距离
- android - 如何解决有关“使用短信或通话记录权限组”的谷歌播放警告
- python - Django ORM: Min('field',filter=...) 导致 TypeError: can only concatenate list (not "tuple") to list
- javascript - 无法通过 Javascript 执行 Switch Card
- scala - 不能通过下限规则限制方法
- css - 无法使用引导程序将 div 与背景图像大小覆盖正确对齐
- internationalization - Angular 7 i18 国际化改变应用程序运行时间