c - C 中指针递增的方法有很多种,有什么区别?

标签 c arrays pointers indexing

我正在学习 C,并试图弄清楚如何在实例化时增加指针: int A[] = {111, 222, 333}; int *q = A; 然后我尝试将指针 qA 的零索引增加到下一个索引。

我写了两个函数:

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/

相关文章:

排序函数中的 Javascript Sync 2 个或更多数组

php - 如何在 PHP 中获取 JSON 数组并打印其值?

c - 以下 C 代码有什么问题 - 结构和指针

c - malloc 是否负责内存对齐?

c - 在进入循环之前 fgets() 不断被跳过

arrays - Haskell repa - 如何减少数组并返回索引?

C - 链表

c - 我如何为 Mac 编程

c - 从文件转换时间并与当前时间进行比较

c++ - 什么是指向 x 个整数数组的指针?