C/C++之指针加减法】的更多相关文章

C和C++中可对指针进行加减,但对其进行乘除则基本无实际意义.一般来说,对指针进行减法的前提是减数和被减数均指向同一数组.加法同理.需要注意的是,两个指针的减法,结果是两个地址之间索引变量的数目,而不是占用内存的字节数.例如下面例子: #include<iostream> using namespace std; int main(void) { ] = {}; cout << (Array+) - Array << endl; ; } 运行结果为:3将Array从in…
5,数组指针的不同含义 int a[5][10]; printf(%d, %d, %d\n", a, a+1, &a+1);  //1310392,1310432,1310592 a和&a都是数组a[5][10]的首地址. a 是 int a[10]的类型,而 &a 则是 a[5][10]的类型.指针运算中的"1"代表的是指针类型的长度.所以 a + 1 和 &a + 1 中的1代表的长度分别为 a 的类型 a[10]即 sizeof(int)…
一.指针的加.减法运算 /* 1.加法运算 1).可以跟整数进行加法运算,得到的还是一个地址 公式: 地址 + 1 = 地址 + 1 * 类型所占的字节数 地址 + n = 地址 + n * 类型所占的字节数 2).只能跟整数运算,不能跟浮点数运算 2.指针的减法运算: 1).可以跟整数进行减法运算,得到的还是一个地址 公式: 地址 - 1 = 地址 - 1 * 类型所占的字节数 地址 - n = 地址 - n * 类型所占的字节数 2).只能跟整数运算,不能跟浮点数运算 */ //例如: //…
既然指针是一种数据类型,那么它也应该有对应的操作或运算,正如整数能做加减乘除一样.但是每一种操作或运算都应该对这种数据类型有意义.比如两个实数可以用关系运算得知哪个大哪个小,而两个虚数却不能使用关系运算,因为比较虚数的大小是没有意义的. 对于指针类型来说,可以使用的运算有:和整数做加法运算.和整数做减法运算.两指针做关系运算.很显然,指针类型的乘除法是没有意义的,也是不允许的. 指针的加减运算 指针的加减法和数的加减法是不同的.我们认为,指针只能够和整数做加减法运算(包括和整型常量.变量做加减法…
指针 指针 存放地址 只能存放地址 使用 &取地址运算符 *取值 解引用运算符 malloc 申请堆内存 free释放堆内存 1.1 指针 存放的地址(变量地址 常量区的地址 堆区内存首地址 数组首地址 指针变量的地址 函数地址) 1.指针 也是变量 指针也有类型 int *p; //定义的时候 去掉变量名 剩下的就是类型 int * 类型 存放什么类型的变量地址 int (去掉*p之后 剩下的就是存放的地址中变量的类型) 二级指针 int **pp: pp的类型 int** pp指向的数据类型…
实现数组旋转(循环右移) 如数组 [1, 2, 3, 4, 5, 6, 7],右移 3 位则为 [5, 6, 7, 1, 2, 3, 4] 首先使用泛型函数 void Rotate(void *front, void *middle, void *last) { int frontSize = (char *)middle - (char *)front; int backSize = (char *)last - (char *)middle; char *buffer = (char *)m…
声明指针: //指针声明 * 号左右的空格是可选的,下面的定义都是正确的 int *pointer1; int* pointer2; int*pointer3; int * pointer4; //注意: pointer5 是指针而 pointer6 不是 int *pointer5, pointer6; //pointer7 和 pointer8 都是指针 int *pointer7, *pointer8; 指针的类型和指针所指向的类型: //指针的类型是int*,表示为int对象的指针 //…
以32为系统为例. 1.指针与地址指针是一种变量,保存了所指向对象的地址.1.1 定义int i = 10;int *p = &i; //定义了一个指针p,它指向一个int型的变量&是地址运算符,*是间接引用运算符.&i是取i在内存中的地址,*p = &i是将i的地址赋值给p,即p的值是i的地址.1.2 引用*p = 100 等价于 i = 100,即将i的值改成100*p += 1 等价于 i += 1,即将i的值加1*p++改变了p所指向的地址,此时p不再指向i的地址,…
#include <stdio.h> #include <stdlib.h> void main3() { ; int *p = &num; p++;//不可预测的值 指针++就是按照指针的类型大小前进一个类型的大小 //如果是int就前进4个 printf("%d",*p);//指针++只有在数组才有意义 } //void main4() //{ // int a[5]; // int i = 0; // printf("%p",a…
此文为指针系列第二篇: C语言精要总结-指针系列(一) C语言精要总结-指针系列(二) 指针运算 前面提到过指针的解引用运算,除此之外,指针还能进行部分算数运算.关系运算 指针能进行的有意义的算术运算包括加减法运算,但不包括乘除运算.并且运算存在诸多限制. 加法运算 指针加法运算只适合指针与整数,不能用在指针与指针. 指针加上或者减去一个整数n,是存储的地址值加上或者减去n*指针指向类型的空间大小.也就是 结果指针 = 指针 ±  n * 指针指向类型空间大小. 例如int类型的整数指针+1,运…