指针的简单总结
时间:2010-10-29 来源:shenhailuanma
对于指针这块,感觉有很多要说,但真正下笔时却又不知写点啥好。所以写点我自己的理解好了。
4.指向函数
一般定义形式:数据类型 (*指针变量名)();
例如: int max(int,int);
int (*p)();
p=max;
5.返回指针值的函数
一般定义形式: 类型名 *函数名(参数列表)
例如:int *a(int x,int y)
6.指针数组
一个数组,其元素均为指针类型数据,称为指针数组,指针数组中的每一个元素都是一个指针变量。
一般定义形式: 类型名 *数组名[数组长度];
例如: int *p[4];
它比较适合用来指向若干个字符串,使字符串处理更加方便灵活。
7.指向指针
一般定义形式: char * *p;
=====================================
下面是指针比较晦涩应用:
1.数组名的研究
例如:
int a[10];
则a,&a,a+1,&a+1的值各是多少?
经过编译运行,可以得到:
a=-1076061148
&a=-1076061148
a+1=-1076061144
&a+1=-1076061108
可以发现a和&a的值相同,a+1比a增加了4,&a+1比&a增大了40 。
原理:a作为右值表示数组首元素地址,&a代表数组首地址,把整个数组作为一个元素看待,故a+1移动一个元素的位置,&a+1移动一个数组长度的位置。
2.指向数组的指针
例如:
int (* array)[10]; //array是一个指针,指向有10个元素的整型数组。
首先,指针变量是一个变量,其内容是指向内存某个单元的地址。
指针用法主要有以下几种:
1.指向变量
这个最基础,就不说了。不过要注意变量类型的问题。
2.数组
在我看来,数组名也是指针,代表地址,但是它是常量,不能对它的值进行修改。
3.字符数组、字符串4.指向函数
一般定义形式:数据类型 (*指针变量名)();
例如: int max(int,int);
int (*p)();
p=max;
5.返回指针值的函数
一般定义形式: 类型名 *函数名(参数列表)
例如:int *a(int x,int y)
6.指针数组
一个数组,其元素均为指针类型数据,称为指针数组,指针数组中的每一个元素都是一个指针变量。
一般定义形式: 类型名 *数组名[数组长度];
例如: int *p[4];
它比较适合用来指向若干个字符串,使字符串处理更加方便灵活。
7.指向指针
一般定义形式: char * *p;
=====================================
下面是指针比较晦涩应用:
1.数组名的研究
例如:
int a[10];
则a,&a,a+1,&a+1的值各是多少?
经过编译运行,可以得到:
a=-1076061148
&a=-1076061148
a+1=-1076061144
&a+1=-1076061108
可以发现a和&a的值相同,a+1比a增加了4,&a+1比&a增大了40 。
原理:a作为右值表示数组首元素地址,&a代表数组首地址,把整个数组作为一个元素看待,故a+1移动一个元素的位置,&a+1移动一个数组长度的位置。
2.指向数组的指针
例如:
int (* array)[10]; //array是一个指针,指向有10个元素的整型数组。
相关阅读 更多 +