指针之王
来源:互联网 发布:yii2.0 项目源码 编辑:程序博客网 时间:2024/04/27 22:50
int * p;
*p=12; X
指针在*p(也就是解应用或使用)前必须初始化,上语句只是声明指针,未給指针分配实际指向空间,是野指针。
int i=12;
int * p;
p=&i;
*p=13; //正确
p[i]=*(p+i);
二维数组、数组指针、二维指针
二维数组等价于数组指针和二级指针没啥关系。
#include<stdio.h>
int main()
{
char **p, a[16][8];
p=a;
}
//error C2440: '=' : cannot convert from 'char [16][8]' to 'char ** '
int (*v)[10];
在 Visual C++ 里面不能与 int **v 等同起来。
举个例子:
int **p;
int (*v)[10];//10表示的是二维数组的列 所以一定要和列的大小一致
int a[10][10];
如果写 v = a 是可以的。
如果写 p = a 将会引起一个类型不匹配的编译错误。
二级指针(int **p)需要自己指向一个一级指针,而二维数组则
不是这样。编译器为了节省空间和时间,没有采用指针指向指针的方法,而是将数组现
行地存放在内存中。这样一来,int (*v)[10] 也就成了 C 语言的一种特殊语法,它只
能表示 v 指向第一维具有 10 个元素的二维数组的头部。这样 v 的类型与 a[10][10]
正好匹配,v 的类型与 b[5][10](比如说定义了 b)也是匹配的。但是 v 不能匹配
c[5][5] 因为 c 的内存分布中每隔 5 个元素就把第二维的下标加一。
可以这样写,呵呵……复制代码这样 pointer 也可以作为二维数组来使用,但是每两个下标相邻的元素在内存中的地址不一定
是相邻的,而且还有 10 个一维指针占用内存空间作为桥梁。
char **str1=NULL;
char *x="zhang";
str1=&x;
在 Visual C++ 里面不能与 int **v 等同起来。
举个例子:
int **p;
int (*v)[10];//10表示的是二维数组的列 所以一定要和列的大小一致
int a[10][10];
如果写 v = a 是可以的。
如果写 p = a 将会引起一个类型不匹配的编译错误。
二级指针(int **p)需要自己指向一个一级指针,而二维数组则
不是这样。编译器为了节省空间和时间,没有采用指针指向指针的方法,而是将数组现
行地存放在内存中。这样一来,int (*v)[10] 也就成了 C 语言的一种特殊语法,它只
能表示 v 指向第一维具有 10 个元素的二维数组的头部。这样 v 的类型与 a[10][10]
正好匹配,v 的类型与 b[5][10](比如说定义了 b)也是匹配的。但是 v 不能匹配
c[5][5] 因为 c 的内存分布中每隔 5 个元素就把第二维的下标加一。
可以这样写,呵呵……
- #include<stdio.h>
- #include<stdlib.h>
- int main()
- {
- //local declarations
- int **pointer;
- int count;
- int i;
- int *p;
-
- //statements
- pointer= (int **)malloc (sizeof(int *) *10);
- for( count=0; count < 10; count++ )
- pointer[count]=(int *)malloc(sizeof(int) * 10);
-
- for(count=0; count< 10; count++)
- {
- p=*(pointer+count);
- for(i=0; i<10; i++)
- *(p+i)=count;
- }//for
- for(count=0; count<10; count++)
- {
- for(i=0;i<10;i++)
- printf("%6d",*(*(pointer+count)+i));
- printf("\n");
- }//for
- return 0;
- }//main
是相邻的,而且还有 10 个一维指针占用内存空间作为桥梁。
char **str1=NULL;
char *x="zhang";
str1=&x;
双指针分为:大 小指针(求最大值和次大值)。 快慢指针(一个1步,一个2步)
左右指针(排序线性扫描法、快速排序法)
http://blog.csdn.net/maopig/article/details/6716223- 顶
- 0
0 0
- 指针之王
- 指针之指针数组
- 指针理解之指针“起源”
- 指针理解之指针“起源”
- 指针进阶之指针运算
- 指针杀手之野指针
- C/C++指针之--NULL指针,零指针,野指针
- C语言之指针
- C语言之指针
- Delphi之指针使用
- C++之智能指针
- this指针之const
- 程序设计之指针
- 学习笔记之 指针
- 智能指针之auto_ptr
- c++基础之指针
- 面试必备之指针
- 两个指针之美
- C# 中的委托和事件
- QQ侧滑SlideMenu的制作
- 我的Springmvc开发详细步骤
- $().each() 与 $.each()区别
- 对话框之自定义对话框
- 指针之王
- 解决Sublime There are no packages available for installation无法使用Package Control更新插件的问题
- HTML DOM nodeType 属性
- Linq入门详解(Linq to Objects)
- Android Studio的关联源码
- (转)Python打包
- Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别
- Bluemix平台打造DC/OS云计算平台(二)
- Android四大组件之Service