黑马程序员技术交流社区
标题:
指针小心得,多多指教
[打印本页]
作者:
墨琰
时间:
2015-8-12 22:33
标题:
指针小心得,多多指教
指针
1.指针的定义:存储地址的变量,(数组名地址,数组中元素的地址,变量名地址)
2.指针也是一种数据类型,定义一个指针的数据类型,和普通数据类型一样。
定义格式:基本数据类型 *指针变量名;
int *p;
char *name;
float *f;
double *d;
long *l;
等等,由基本数据类型加空格加*加指针变量名定义
3.指针是一个专门存储地址的变量,指针本身也有地址,当一个指针指向了某个地址,便可以+1,-1,动作实现指针的移动(移动的字节数,看指针定义的时候指向的数据是什么类型,移动几位就乘以相应的字节数)。
4.指针与数组那些事儿:
1)指针数组(指针类型的数组,一次可以管理多个地址,把他们搞到一起,成为一个指针数组),首先它是一个数组,然后其数据类型为指针类型,便是一个存储了一组指针变量(地址)的数组。
格式:int *p[4];
int a=4;b=5,c=3,d=6;
int *p[4]={&a,&b,&c,&d};
取值:*p[i],指针数组名p=&a,通过一次取值操作*p[i],便可以将指针数组中每个地址下对应的数据取出来。
2)指针数组的作用,可以将一组地址值进行统一管理,方便对地址的操作。
3)数组指针(一个指针指向了数组,专门管理数组中元素的地址,便成了数组的指针),首先它是一个指针,指向了数组。便称为数组的指针,存储了数组的地址(也是数组中第一个元素的地址)
格式:int (*p)[4];
int arr[4]={2,3,4,5};
int (*p)[4]=&arr;//这里为何是&arr,而不是arr,原因是数组名本身有自己的地址
通过循环遍历整个数组来取出指针指向的数组中的数据。
取出数组中的数据:(*p)[i];//注意它的取出方式和数组名加脚标的方式一样
5.指针与函数的那些事儿:
类似于指针和数组的关系一样,函数也分为函数指针,和指针函数;
1)函数指针,首先是一个指针,指向了一个函数,所以它就是一个指针,指向了函数。
格式:int (*p)(参数){}
它的作用,可以作为参数进行传递;
2)指针函数,首先它是一个函数,只是其返回值类型是指针(返回的是一个地址)类型。
格式:int *p add(){}
作用,可以返回一个地址值
6.指针与字符串那些事儿:
1)可以通过一个字符指针定义一个字符串,指向了字符串的首地址(第一个元素的首地址)
格式:char *name="Tom";这是一个定义字符串的方式(C语言中用字符数组的形式定义字符串,有'\0'的是字符串,没有的话就是字符数组)
7.指针与结构体的那些事儿:
1)结构体指针,是一个结构体(一种自顶一个数据类型,类似于一个JAVA中的一个类中属性部分,多种数据类型的组合),类型的指针。
格式:
struct Car{
char *name;
char *color;
int wheel;
}(*p);
作者:
fersh
时间:
2015-8-12 23:22
总结很是详细,学习了
作者:
阿伦666
时间:
2015-8-12 23:29
赞赞赞!围观学习!
作者:
张恒宇
时间:
2015-8-12 23:41
这个总结怎么看都面熟。。。。
作者:
晚上没饭吃
时间:
2015-8-12 23:43
表示好像没有学过指针
作者:
nancexp
时间:
2015-8-12 23:54
总结的很不错啊 !
作者:
愿得一人心1111
时间:
2015-8-14 21:53
不错 很详细 收藏了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2