双指针的4种含义
来源:互联网 发布:c语言memcpy函数实现 编辑:程序博客网 时间:2024/04/29 12:28
以前,我对于双指针所指向的对象究竟是什么、如何初始化双指针等问题一直搞不清楚。今天看了UIUC的教学视频,终于搞明白了。若觉得下面的中文描述不够清楚,请看文章最后的英文描述。
在看双指针之前,先来看看最简单的单指针:
int *X
对于*X,有两种可能(理论上应该说*X指向什么,但为了后面方便理解,这里我们改口为 “ *X是什么 ”):
1. *X是一个整型实例,初始化:X = &(whatever int object)
2. *X是一个整型动态数组 X = new int [size]
那么我们再来看双指针:
int **X
它有4种可能性。(为什么?单指针2种,双指针就是2x2种,n重指针就是2^n种)
1. **X是一个整型实例(X里存的是*X的地址,而*X里存的是一个整型实例的地址)
一层初始化:X = new int *;
二层初始化:*X = new int;
2. **X是一个指针,它指向一个整型的动态数组:
一层初始化:X = new int *;
二层初始化:*X = new int [ size ] ;
3. **X是一个动态数组,在这个动态数组里,每一个元素都是一个整型的动态数组:
一层初始化:X = new int* [ size1 ] ;
二层初始化:for( i=0; i<size1; i++)
X [ i ] = new int [ size2 ] ;
4. **X是一个动态数组,在这个动态数组里,每个元素都是一个指针,每个指针都指向一个整型实例
一层初始化: X = new int* [ size ] ;
二层初始化: for( i=0; i<size; i++ )
X[i] = new int;
The four meanings of double pointers: png **p
1). Pointer to a dynamic array of pngs
p = new png*;
*p = new png[size];
2). Pointer to a pointer to a png
p = new png*;
*p = new png;
3). A dynamic array of dynamic arrays of pngs
p = new png*[size1];
for(i=0;i<size1; i++)
p[i] = new png[size2];
4). A dynamic array of pointers to pngs
p = new png*[size];
for(i=0; i<size;i++)
p[i] = new png;
Why are there four: What could int *x be? It could eitherbe a pointer to int, or a dynamic array of ints. So double pointer is 2x2,trible pointer is 2x2x2.
- 双指针的4种含义
- 指针++的含义
- 指针+1的含义
- delete指针的含义
- 指针比较的含义
- OXFeeeFeee指针的含义
- OXFeeeFeee指针的含义
- 各种指针的含义
- this指针的含义
- 数组名的含义、指针含义
- 指针的数据类型的含义
- C++中的指针的指针的含义。
- C++指针比较的含义
- c++指针比较的含义
- C++ this指针的含义
- 几个指针变量的含义
- c++指针比较的含义
- 【1】指针的真正含义
- poj - 1664 - 放苹果
- 使用PowerPivot建立简单的分析模型
- github使用教程
- TCO round 3A
- SQL Server 2012 SP1 企业版
- 双指针的4种含义
- C++单件模式(只保留唯一个类对象)
- 【贪心】GCJ 2012 round1A kingdom rush
- 【动态规划】poj 3211 washing clothes
- Discuz! X3.0 beta 迎春登场啦!
- [Leetcode] Largest Rectangle in Histogram
- MapReduce编程之通过MapReduce读取数据,往Hbase中写数据
- leetcode 109: Construct Binary Tree from Preorder and Inorder Traversal
- 查询数据库结构信息