【发布时间】:2022-01-05 20:28:31
【问题描述】:
我有一个函数,其中包含 for 循环,用于打印指向数组 index 和 value
的指针
但我的问题是我在互联网上找不到如何通过指向数组的指针打印索引
我尝试了很多选项,但它总是输出地址、值或崩溃...
double func(double*startValueOfArrayPointer,double*endValueOfArrayPointer){
double *pointerI;
for(pointerI=startValueOfArrayPointer+1;pointerI<=endValueOfArrayPointer;pointerI++)
{
printf("\n %d value is %.2lf", ,*pointerI);
}
}
我希望它像这样输出:
1 值为 23.32
2 值为 34.65
3 值为 1.76
.. .
提前致谢
【问题讨论】:
-
你想要:
printf(" %d value is %.2lf\n", pointerI - startValueOfArrayPointer, *pointerI); -
@CraigEstey
%d不适合ptrdiff_t -
@0___________ 哎呀,
%d-->%ld或%zu有效吗?或者,只是(int) (pointerI - startValueOfArrayPointer)? -
@CraigEstey ptrdiff_t 已签名 - 所以
zu不是一个好的选择。不是吗?如果我们考虑可移植代码, (int) 可能太短。td是正确的——但许多实现不支持它。所以在这种情况下最安全的是lld -
@0___________ 是的,[通常]它已经签名,但在这个用例中它总是积极的,所以
zu(与zd相比)可能没问题。我以前从未见过td——学习新事物总是很好。有没有sizeof(ptrdiff_t) != sizeof(ssize_t)的情况?
标签: c for-loop pointers pointer-arithmetic function-definition