您的位置:首页 > 编程语言 > C语言/C++

C语言的指针不能与数组之前的内存进行比较

2022-05-13 14:20 2196 查看

标准允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针进行比较,但是不允许与指向数组第一个元素之前的那个内存位置的指针进行比较。

  1. 案例一
    #define DATAMAX		5
    int values[DATAMAX]
    int *cp
    // 这个测试是没问有题的
    for(cp = &values[0]; cp < &values[DATAMAX]; )
    {
    *cp++ = 0
    }
    **注意:**此案例是通过指针与数组最后一个元素之后的那个内训进行比较,所以运行是没问题的
  2. 案例二
    #define DATAMAX		5
    int values[DATAMAX]
    int *cp
    // 这个测试在有的编译上是无法运行的
    for(cp = &values[DATAMAX-1]; cp >= &values[0]; cp--)
    {
    *cp = 0
    }
    **注意:**此案例是通过指针与数组第一个元素之前的内存进行比较,在大多数C编译器中是没问题的,对部分编译器是无法正常运行的。对于负责
    移植代码的程序员简直是个噩梦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐