首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >*ptr += 1与*ptr++在C中的区别

*ptr += 1与*ptr++在C中的区别
EN

Stack Overflow用户
提问于 2016-02-10 11:39:24
回答 2查看 19.5K关注 0票数 124

我刚开始学习C,在做一个将指针作为函数参数传递给指针的例子时,我发现了一个问题。

这是我的示例代码:

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int* allocateIntArray(int* ptr, int size){
    if (ptr != NULL){
        for (int i = 0; i < size; i++){
            ptr[i] = i;
        }
    }
    return ptr;
}

void increasePointer(int** ptr){
    if (ptr != NULL){
        *ptr += 1; /* <----------------------------- This is line 16 */
    }
}

int main()
{
    int* p1 = (int*)malloc(sizeof(int)* 10);
    allocateIntArray(p1, 10);

    for (int i = 0; i < 10; i++){
        printf("%d\n", p1[i]);
    }

    increasePointer(&p1);
    printf("%d\n", *p1);
    p1--;
    free(p1);
    fgets(string, sizeof(string), stdin);
    return 0;
}

当我将*ptr+=1修改为*ptr++时,问题发生在第16行。预期的结果应该是整个数组和数字1,但是当我使用*ptr++时,结果是0。

+=1++之间有什么不同吗?我以为他们两个是一样的。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35306391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档