指针的减法运算和指针在函数间的传递

昨晚在微信上和老友讨论c语言指针的相关问题,得到点收获。他和我一样,都是2016年6月份毕业的,从事的也都是嵌入式软件开发工作。下来,我尝试着将讨论的内容讲清楚。

说明,下面测试程序会用到两个宏: NUM和ERRP,它们的原型为:

#define ERRP(con, ret, ...) do  \
    if (con){                   \
    printf(__VA_ARGS__);        \
    ret;                        \
}while(0)

#define NUM                     5

1. 指针的减法运算

int* intPoint = NULL;
    void* voidPoint = NULL;

    intPoint = (int* )malloc(sizeof(int) * NUM);
    ERRP(NULL == intPoint, return -1, "intPoint: malloc memory failed!!\n");

    voidPoint = malloc(sizeof(int) * NUM);
    ERRP(NULL == voidPoint, return -1, "voidPoint: malloc memory failed!!\n");

    printf("voidPoint = %p, voidPoint + sizeof(int) * 5 = %p\n", voidPoint, voidPoint + sizeof(int) * 5);
    printf("(voidPoint + 5 * sizeof(int)) - voidPoint = %d\n", (voidPoint + 5 * sizeof(int)) - voidPoint);

    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值