C语言的指针不能与数组之前的内存进行比较
2022-05-13 14:20
1991 查看
标准允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针进行比较,但是不允许与指向数组第一个元素之前的那个内存位置的指针进行比较。
- 案例一
#define DATAMAX 5 int values[DATAMAX] int *cp // 这个测试是没问有题的 for(cp = &values[0]; cp < &values[DATAMAX]; ) { *cp++ = 0 }
**注意:**此案例是通过指针与数组最后一个元素之后的那个内训进行比较,所以运行是没问题的 - 案例二
#define DATAMAX 5 int values[DATAMAX] int *cp // 这个测试在有的编译上是无法运行的 for(cp = &values[DATAMAX-1]; cp >= &values[0]; cp--) { *cp = 0 }
**注意:**此案例是通过指针与数组第一个元素之前的内存进行比较,在大多数C编译器中是没问题的,对部分编译器是无法正常运行的。对于负责
移植代码的程序员简直是个噩梦
相关文章推荐
- strcmp函数只能对字符指针(变化的地址)或数组名(固定的地址)进行比较asc2码
- 第七章 内存管理(常见内存错误,指针数组的比较)
- 3.定义两个整型指针,分别用malloc、calloc对其分配空间保存3个元素,malloc分配的空间用memset清零,随机对数组进行赋值随机范围1-3,赋值后用memcmp比较两个数组。如果相同打
- 不能对数组名进行直接复制与比较。
- C语言 内存分配 地址 指针 数组 参数 实例解析
- 【C语言提高24】二级指针做输入的第一种内存模型:数组指针
- 定义两个整型指针,分别用malloc、calloc对其分配空间保存3个元素,malloc分配的空间用memset清零,随机对数组进行赋值随机范围1-3,赋值后用memcmp比较两个数组。如果相同打印G
- c语言:“不能在赋值语句中通过赋值运算符‘=’对字符型数组进行整体赋值。”这句话为什么是对的? 5 例如: main() { char s[5]="asdf"; } 这个整体赋值应该是可以的啊,请教应
- 定义两个整型指针,分别用malloc、calloc对其分配空间保存3个元素,malloc分配的空间用memset清零,随机对数组进行赋值随机范围1-3,赋值后用memcmp比较两个数组。如果相同打印G
- C语言 内存分配 地址 指针 数组 参数 实例解析
- C语言指针之通过修改内存修改数组的数据
- C语言 字符串用指针数组将字符串进行排序
- C语言深度剖析学习笔记-指针、数组、内存、函数
- C语言 指针引用字符串 以及 字符指针变量和字符数组的比较
- C语言 为什么数组名(数组首地址)不能进行加减操作?
- C语言 内存分配 地址 指针 数组 参数 实例解析 (C语言复习)
- C语言 内存分配 地址 指针 数组 参数 实例解析
- C语言 内存分配 地址 指针 数组 参数 实例解析
- [C语言]除非该数组为全局变量,否则只能在定义数组时获取数组长度,在传递过程中只是传递指针不能再次获取长度
- 【嵌入式开发】C语言 内存分配 地址 指针 数组 参数 实例解析