`
bcyy
  • 浏览: 1826380 次
文章分类
社区版块
存档分类
最新评论

指针相减

 
阅读更多

指针相减

如果两个指针指向同一个数组,它们就可以相减,其结果为两个指针之间的元素数目。

假设我住在广场路号,Mag住在广场路号,每家之间的地址间距是(在我这一侧用连续的偶数作为街道地址),那麽Mag家就在我家往前(142-124)/2,也就是说可以得到我们两家之间相隔家。

也就是说可以利用两个指向同一数组的指针相减得到两个指针之间元素的个数。

如果两个指针不是指向同一个数组,它们相减就没有意义了。

C本身无法防止非法的指针减法运算,它无法为你提出任何警告或提示。

验证程序:

输出为:4,1

文章来自:http://chenyong119.blog.163.com/blog/static/6019255201022542617128/

分享到:
评论

相关推荐

    C语言技术进阶之 指针相减的含义

    int main() { int iA[4]; short *p1 = &iA;[0]; short *p2 = &iA;[1];... printf("Pointer Diff = %lu\n",p2-p1);...上述程序运行结果:Pointer Diff = 2 (代表...因为指针相减含义是多少个该类型的单位。不是纯字节数。

    C语言中指针的加减运算方法示例

    从结果可以看到,字符数组每个元素占1字节,字符指针数组每个占4字节。 再看一个例子: char a = 'a', b = 'b', c = 'c', d = 'd'; char *arr[20] = {&a,&b,&c,&d}; char **parr = arr; //arr的类

    C++实现动态线性表

    这里使用指针来遍历数组,这样在算size,capacity的时候,直接用指针相减的方式就可以得到元素个数,以及容量。 Vector.h #include #include #include #include //用typedef定义int为存储类型,想更改直接更改这一...

    C++出错提示英汉对照表

    Illegal pointer subtraction ------------------非法的指针相减 Illegal structure operation ------------------非法的结构体操作 Illegal use of floating point -----------------非法的浮点运算 Illegal use...

    指针算术

    指针可以加上或减去一个整数。指针的这种运算的意义和通常的数值的加减运算的意义是不一样的。...指针的相减将得到一个整数,仅当两个指针指向同一个数组时这种运算才有意义,这将得到两个元素的间隔。

    链表实现长整数相加减

    通过创建两个指针链表,实现两个无限长整数数据相加和相减。

    长正整数相减(数据结构-循环链表)

    测试过了,绝对好用,大家顶一下 以下是部分.h代码 typedef struct node { int data; struct node *next;...//完成两个链表减法操作返回指向|*p-*q|结果的指针 } void printint(NODE *s){ //打印链表 }

    C++中指针的数据类型和运算相关知识小结

    C++规定,一个指针变量加/减一个整数是将该指针变量的原值(是一个地址)和它指向的变量所占用的内存单元字节数相加或相减。如p+i代表这样的地址计算:p+i*d,d为p所指向的变量单元所占用的字节数。这样才能保证p+i...

    零起点学通C++多媒体范例教学代码

    8.7 _3指针的相减运算 8.7.4 指针的比较运算 8.8 指针 8.8.1 常量指针 8.8.2 指向常量的指针 8.8.3 指向常量的常指针 8.9 总结 第9章 引用 9.1 什么是引用 9.1.1 引用的地址 9.1.2 引用就是别名常量 9.1.3 引用对象...

    零起点学通C++学习_多媒体范例教学代码

    8.7 _3指针的相减运算 8.7.4 指针的比较运算 8.8 指针 8.8.1 常量指针 8.8.2 指向常量的指针 8.8.3 指向常量的常指针 8.9 总结 第9章 引用 9.1 什么是引用 9.1.1 引用的地址 9.1.2 引用就是别名常量 ...

    动态申请空间实现矩阵加减法

    (6) 定义矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵中; (7) 动态申请三个矩阵:A1、A2、A3; (8) 初始化A1、A2; (9) 计算并输出A3 = A1加A2,A3 = A1减A2; (10) 释放矩阵空间

    面向对象程序设计(c++)

    (6) 定义矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵中; (7) 动态申请三个矩阵:A1、A2、A3; (8) 初始化 A1、A2; (9) 计算并输出 A3 = A1 加 A2,A3 = A1 减 A2; (10) 释放矩阵...

    定义类实现矩阵加减法

    矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵类,但必须矩阵大小相同。 (3) 定义三个矩阵:A1、A2、A3; (4) 初始化A1、A2; (5) 计算并输出A3 = A1加A2,A3=A1减A2; (6) 用new动态创建...

    Matrix.h 和 Matrix.cpp(C++ 实现矩阵操作)

    实现了矩阵中的各种操作, 包括矩阵相加,相减,矩阵乘法,矩阵转秩,余子式,求行列式的值,求矩阵特征值,LU 分解,QR 分解,求现行方程组的解等等。 是任何做科学计算工作者必备的类库。 此类库也是C++初学者极...

    main.cpp一元多项式

    输入m项的系数和指数,建立一元多项式P,空指针必须引用去创建,新开辟结点链表并复制(数据域和指针域)实现多项式相加,多项式相减,多项式相乘。

    c语言百例 cpp文件

    c语言编程例子,例如利用指针计算时间差,结果返回到主函数 int * jisuan(int a,int b,int c,int d,int e,int f,int g,int h) { int hour1,hour2,minu1,minu2,hour_diff,minu_diff; //算时间差没必要换算成分钟数,...

    C 语言编程常见问题解答.chm

    7.7 两个指针可以相减吗?为什么? 7.8 把一个值加到一个指针上意味着什么? 7.9 NULL总是被定义为0吗? 7.10 NULL总是等于0吗? 7.11 用指针作if语句的条件表达式意味着什么? 7.12 两个指针可以相加吗?为...

    C语言多项式计算器

    //头指针数组 void creatpolyn (LNode *p[]); //创建多项式 void printpolyn (LNode *p[]); //打印多项式 void addpolyn (LNode *p[]); //多项式相加 void subpolyn (LNode *p[]); //多项式相减 void reread ...

Global site tag (gtag.js) - Google Analytics