我正在学习 C,并试图弄清楚如何在实例化时增加指针: int A[] = {111, 222, 333}; int *q = A;
然后我尝试将指针 q
从 A
的零索引增加到下一个索引。
我写了两个函数:
void incr_ptr_single ( int *p ) {
*&p = *&p + 1;
}
void incr_ptr_double ( int **h ) {
*h = *h + 1;
}
我明白这句话 void incr_ptr( int *p) { p = p+1; } inc_ptr(q);
没有做我想要的事情,因为 C 的函数是“按值传递”。
目前,incr_ptr_double(&q) == A[1]
,但incr_ptr_single(q) == A[0]
。我想知道如何修复 incr_ptr_single
函数,使其行为类似于 incr_ptr_double
。
最佳答案
一种“修复”方法incr_ptr_single
就是让它返回递增的指针作为函数结果:
int * incr_ptr_single ( int *p ) {
return p + 1;
}
然后您可以将其称为:
q = incr_ptr_single(q);
关于c - C 中指针递增的方法有很多种,有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30863928/