立即学习:https://edu.youkuaiyun.com/course/play/8088/177054?utm_source=blogtoedu
第九节 指针数组、指针的指针、main函数参数,小节
一。指针数组的概念回顾:一个数组,其元素均为指针类型数据,称为指针数组。指针数组中每一个元素都是指针变量。
指针数组的定义形式:
类型标识符 *数组名[数组长度说明
int *p[4];
数组指针 int (*p)[4];首先是指一个指针变量。
//二:指向指针的指针,用来指向指针的变量的变量,简称指向指针的指针;
char **p;
int **p;定义了一个指向整型指针变量的指针变量
//*(*p);表示指针变量p是指向一个指针变量,*p是p所指向的指针变量
char **pp;
pp = &pName[0];
printf("pp = %s\n",*pp);
三.指针数组做main函数形参
指针数组有个重要应用,就是可以做main的函数的参数,
int main(
int argc,//整型,应该是argv指针数组的元素个数
char *argv[] //就是指针数组,argv[0]保存的是 当前可执行文件的完整路径文件名
)
{
}
//1.在命令行中输入参数
2.如调试的时候在vs201x中加入命令行参数
四.本章小结
(1).指针数据类型小结表:指针变量,指针数组,函数指针,int *p():(函数p,返回一个指针,这个指针指向一个整型数据),二级指针
(2).指针运算小结
(2.1)指针变量的加减
p++,p--;
int *p;1000,1004;
(2.2)指针变量的赋值
int *p = 100;这个是错误的//不可以,不能直接赋初值,不要认为可以将地址1000赋值给p,只能够将变量的已经分配的地址赋值给指针变量
int a;
int *p = &a;
(2.3)指针变量可以为空值,表示不指向任何变量
int *p = NULL;//赋值为0,可以,但赋值为1就不可以,NULL就相当于是0,就是使p指向地址为0的单元。系统会保证地址为0 的这个单元不存放有效数据。
(3)void *型指针,万能型指针变量 ,也就能指向任意数据类型。
int a = 3;
int *p = &a;
float bf = 56.f
float *pf = &bf;
//p = pf;//这个是不对的
p = (int*)pf;这样才能用
void *pwn = NULL;
pwn = p;
pwd = pf;//这样都可以
pf = (float *)pwn;
(4)总结
优点:效率高;
缺点:太过灵活;
*/