C语言的指针不能与数组之前的内存进行比较
标准允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针进行比较,但是不允许与指向数组第一个元素之前的那个内存位置的指针进行比较。
- 案例一
#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编译器中是没问题的,对部分编译器是无法正常运行的。对于负责
移植代码的程序员简直是个噩梦 
C语言的指针不能与数组之前的内存进行比较的更多相关文章
- C语言 字符串指针和字符串数组使用区别
		
字符串指针和字符串数组使用区别 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 ...
 - C语言之指针1.1数组
		
void main() { ]={,,,,,}; ;i++) { printf("%d\n",*(arr+i)); } } 输出结果时候123456
 - C#委托与C语言函数指针及函数指针数组
		
C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...
 - C语言学习笔记之成员数组和指针
		
成员数组和指针是我们c语言中一个非常重要的知识点,记得以前在大学时老师一直要我们做这类的练习了,但是最的还是忘记了,今天来恶补一下. 单看这文章的标题,你可能会觉得好像没什么意思.你先别下这个 ...
 - C语言之指针与数组总结
		
和指针相关的问题口诀1: 1. 地址变量得地址,得谁地址指向谁 和指针相关的问题要画图: 内容变量画房子,指针画箭头 ---->口 ------------------------------- ...
 - C语言中 指针和数组
		
C语言的数组表示一段连续的内存空间,用来存储多个特定类型的对象.与之相反,指针用来存储单个内存地址.数组和指针不是同一种结构因此不可以互相转换.而数组变量指向了数组的第一个元素的内存地址. 一个数组变 ...
 - C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
		
原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...
 - C语言中的函数、数组与指针
		
1.函数:当程序很小的时候,我们可以使用一个main函数就能搞定,但当程序变大的时候,就超出了人的大脑承受范围,逻辑不清了,这时候就需要把一个大程序分成许多小的模块来组织,于是就出现了函数概念: 函 ...
 - go语言学习--指针数组和数组指针
		
数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长.也就是说执行p+1时,p要跨过n个整型数据的 ...
 - C语言使用指针表示数组的注意事项
		
1)数组名是指针常量 如对指针变量可以进行++运算,但是对数组名却不允许,另外,对数组名的赋值运算也是错误的 2)注意指针变量的当前值 指针变量的值在程序运行过程中可能经常改变,要对此注意 3)数组越 ...
 
随机推荐
- hackme 【攻防世界】Reverse
			
题目: 丢到PE里, 无壳,64bit 丢到IDA里,shift+F12,查看字符串,找到一个很可疑的字符串 跟进去看看,找到目标函数,我另外搜索了一下,没有mian函数,sub_400F8E应该就是 ...
 - 聊一下Button事件、命令、行为的触发顺序
			
1.我们新建一个xaml <StackPanel Width="200" Margin="20"> <Button Height=" ...
 - 做easyexcel遇到的问题数据库采用的mybatis-plus
			
导入坐标 <!-- easyexcel依赖--><dependency> <groupId>com.alibaba</groupId> <arti ...
 - 面试官:说说Spring中IoC实现原理?
			
IoC(Inversion of Control)即控制(权)反转,它是一种编程思想,它的核心理念是将对象的创建和管理权力从对象本身转移到外部的容器或框架. IoC 的主要目的是降低代码之间的耦合度, ...
 - KingbaseES V8R3 表加密
			
前言 透明加密是指将数据库page加密后写入磁盘,当需要读取对应page时进行加密读取.此过程对于用户是透明, 用户无需干预. 该文档进行数据库V8R3版本测试透明加密功能,需要说明,该版本发布时间早 ...
 - KingbaseES 基于SQL的函数过程
			
什么是SQL函数? SQL函数包体是一些可执行的SQL语言.同时包含1条以上的查询,但是函数只返回最后一个查询(必须是SELECT)的结果. 除非SQL函数声明为返回void,否则最后一条语句必须是S ...
 - C++原子操作与内存序 1
			
问题 #include<iostream> #include<thread> int main() { int sum = 0; auto f = [&sum]() { ...
 - Linux 基础命令和帮助命令
			
Linux命令 X Window 与命令行模式的切换 Linux默认的情况下会提供六个终端来让用户登录,切换的方式为使用[Ctrl+Alt+F1~F6]的组合键.系统会将[F1 ~ F6]命名为t ...
 - OpenHarmony 分布式硬件关键技术
			
本文转载自 OpenHarmony TSC 官方微信公众号<峰会回顾第8期 | OpenHarmony 分布式硬件关键技术> 演讲嘉宾 | 李 刚 回顾整理 | 廖 涛 排版校对 ...
 - C++ 编程入门指南:深入了解 C++ 语言及其应用领域
			
C++ 简介 什么是 C++? C++ 是一种跨平台的编程语言,可用于创建高性能应用程序. C++ 是由 Bjarne Stroustrup 开发的,作为 C 语言的扩展. C++ 为程序员提供了对系 ...