【发布时间】:2015-12-09 00:16:08
【问题描述】:
假设您已将指针传递给数组中的某个 kth 元素,并且您希望搜索该数组。如何使该指针指向数组的开头?这是我的意思的伪代码:
main(){
int arr[5]{1,2,3,4,5};
subRoutine(arr+2); //
}
void subRourtine(int * ptr){
while(ptr){
++ptr; //This only work if i'm looking for an element that is after ptr
}
}
【问题讨论】:
-
当你只有一个指向数组内部某处的指针时,你无法知道数组的开头在哪里,除非数组数据本身在开头包含一个标记值。最好传递一个指针和一个偏移量(和一个大小)。
-
为什么不同时传递一个
int * end_ptr? -
我知道传递长度更好,但由于多种原因我无法添加参数
-
请注意
while(ptr) ++ ptr;是不正确的 - 你只是跑出了数组的末尾
标签: c++