A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 墨琰 中级黑马   /  2015-8-12 22:33  /  588 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

指针
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);



6 个回复

倒序浏览
总结很是详细,学习了
回复 使用道具 举报
赞赞赞!围观学习!
回复 使用道具 举报
这个总结怎么看都面熟。。。。
回复 使用道具 举报
表示好像没有学过指针
回复 使用道具 举报
总结的很不错啊 !
回复 使用道具 举报
不错  很详细  收藏了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马