通常,由于指针运算是独立于数据模型的,而地址运算则可能不是,因此使用指针运算比地址运算更好。此外,使用指针运算通常还可以简化代码。例如,
int *end; int *p; p = malloc(4 * NUM_ELEMENTS); end = (int *)((unsigned int)p + 4 * NUM_ELEMENTS);
将生成以下警告:
warning: conversion of pointer loses bits
以下代码将生成不带警告的结果:
int *end; int *p; p = malloc(sizeof (*p) * NUM_ELEMENTS); end = p + NUM_ELEMENTS;