C语言使用数组指针遍历数组时如何打印对应的下标
问题解决方法
你要的下标可以直接通过当前遍历指针减去数组起始指针得到,这是C语言指针运算的标准特性:指向同一数组的两个同类型指针相减,结果就是两个指针间隔的元素个数。
你代码里的问题有两个:
printf缺少了下标的入参,还多写了一个多余的逗号- 声明了返回值为
double的函数,但没有写return逻辑,编译会触发警告
修正后的完整代码
double func(double* startValueOfArrayPointer, double* endValueOfArrayPointer){ double *pointerI; for(pointerI = startValueOfArrayPointer + 1; pointerI <= endValueOfArrayPointer; pointerI++) { // 指针相减得到的偏移量正好是你要的1、2、3...序号 printf("\n %d value is %.2lf", (int)(pointerI - startValueOfArrayPointer), *pointerI); } // 按需补充你需要的返回值即可 return 0.0; }
注意事项
- 要确保传入的两个指针确实指向同一个数组的有效元素,且
endValueOfArrayPointer的地址大于等于startValueOfArrayPointer,否则指针减法属于未定义行为,会出现异常输出、崩溃等问题 - 如果需要兼容极端场景下的大数组,指针相减结果的标准类型是
ptrdiff_t,可以把格式符换成%zd避免类型转换警告
内容的提问来源于stack exchange,提问作者Cpt Teemo
相关产品推荐
相关产品推荐

