1. 2. 3. const对象的动态数组 4. 创建长度为0的动态数组是合法的,但不能对返回的指针进行解引用 该指针加减0,或减去本身,得0 5. delete [] array;//回收array所指向的数组 6. string类程序比C风格字符串执行得快 7. c_str() 8. 用数组类型 ...
分类:
编程语言 时间:
2020-05-19 20:42:33
阅读次数:
51
一、指针的定义和初始化 指针中* 是间接运算符,可以利用指针访问变量。 二、指针运算 指针与指针相减表示两个指针间可以存储的变量的个数。 指针加减某个整数,相当于将指针移动整数个变量大小。 double 占8个字节,0x30-0x28=16-8=8 正好是加整数1,位置移动了8个字节。 三、指向数组 ...
分类:
编程语言 时间:
2018-05-08 20:56:34
阅读次数:
169
1、什么是指针 2、指针用于参数 3、指针用于返回值 4、指针加减操作 5、指针与数组区别 1、什么是指针 ? 内存被分为字节,每个字节有唯一的地址,指针指的就是内存地址。 ? 保存指针的变量,就叫指针变量。(保存地址) ? 声明一个指针变量 int i = 0; int* p;//声明一个指针变量 ...
分类:
编程语言 时间:
2018-04-26 21:12:56
阅读次数:
170
实现数组旋转(循环右移) 如数组 [1, 2, 3, 4, 5, 6, 7],右移 3 位则为 [5, 6, 7, 1, 2, 3, 4] 首先使用泛型函数 分析: 1、由于 front、middle、last 都是 void 型指针,不能进行指针加减法运算,这里依旧使用转换成 char * 的技巧 ...
分类:
编程语言 时间:
2018-04-17 20:50:28
阅读次数:
116
1、手工写了一个程序验证void *指针加减运算移动几个字节: 输出: 由上可知,当一个int指针被强转为void型指针后,加1,由以前移动4个字节变为了移动1个字节。 结论:void *指针加减1,移动1个字节,这个在一些计算地址的宏和函数里会用到。 例如:container_of宏: ...
分类:
其他好文 时间:
2017-10-19 09:21:55
阅读次数:
367
关于指针和加减法: 指针的加减法:指针的加减法,加多少或者减多少,主要是看所指对象的sizeof值。 例子: 如上图所示,p加了8,因为指向是double类型。p1加了4,因为指向了int。 现在我定义一个数组,int a[3]={0};看一下a+1和&a+1到底加了多少: p+1加了4,&p+1加 ...
分类:
编程语言 时间:
2016-09-19 19:19:22
阅读次数:
154
【1】指针 1 指针变量:用于存放地址量的变量 2 地址常量:数组名、&a 【2】 &:取地址符 *: 1 数据类型的一部分 2 指针解引用(取地址里的内容) 3 【3】指针运算 指针加减:加减的是单位长度 【4】指针大小 size = 4字节; 【5】[]:指针加单位长度后,取*(内容)运算 in ...
分类:
其他好文 时间:
2016-09-18 19:35:06
阅读次数:
101
C和C++中可对指针进行加减,但对其进行乘除则基本无实际意义。一般来说,对指针进行减法的前提是减数和被减数均指向同一数组。加法同理。需要注意的是,两个指针的减法,结果是两个地址之间索引变量的数目,而不是占用内存的字节数。例如下面例子:1 #include2 using namespace std;3...
分类:
编程语言 时间:
2016-01-24 11:28:50
阅读次数:
193
原题:main()
{
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf("%d,%d",*(a+1),*(ptr-1));
}程序输出是什么。
解答:
程序输出: 2,5
分析:
这里主要是考查关于指针加减操作的理解。
对指针进行加1操作,得到的是下一个元素的地址,而不是原有地址值直接加1...
分类:
其他好文 时间:
2015-08-19 16:43:57
阅读次数:
123
//本文是学习《C++程序设计教程--设计思想与实现》的笔记。指针可以进行加减运算。数组名本身,没有方括号和下标,实际上是一个地址,表示数组起始地址。整型数组的数组名本事得到一整数地址,字符数组的数组名得到一字符地址。可以把数组起始地址赋值给一指针,通过移动指针(加减指针)来对数组元素进行操作。例如...
分类:
编程语言 时间:
2015-07-29 13:38:48
阅读次数:
122