指针数组和函数指针的用法和定义 一.指针数组 有一个数组,其里面的素类型都为指针(地址)。 例:const char* pp[2] = { “asd”,”1123″ }; //指针数组
这里的字符串常量其实就是它的地址。 1.定义:char *p[2]={“asd”,”1123″}; []的优先级高,所以先和p结合表明其是一个数组,*表示其数组素为指针,char为指针类型。 2.素访问: pp[0]代表数组第一个素(指针)即第一个字符串的地址:pp[0]+1则代表第一个字符串中s的地址
输出结果:
2.指针具有加一能力,故我们下面讨论每种指针的含义。
运行结果:
分析: pp相当于数组名,和普通数组一样pp[0]代表第一个素,此时pp[0]=”asd”的地址,pp+i=pp[i]; 对于一维数组a,a,&a,&a[0]他们的地址一样。而地址就是指针,所以pp,pp[0],pp[1]都是指针。
系统告诉我们pp这个数组名是一个二级指针(它是pp[0]的地址,而pp[0]也是地址), 对其做一次解引用即*pp=pp[0],再次解引用即pp=’a’.*(*(pp+i)+j)=*(pp[i]+j). 3.缺点:无法对字符串中的数据进行改动。 测试用例代码: 二.函数指针 在程序中定义了一个函数,那么在编译时系统会自动为其分配一段空间,这段存储空间的首地址就成为这个函数的地址,并且函数名表示的就是这个地址。地址就是指针,所以可以用一个指针变量来存放。 先来了解下一下typedef,其实就是为了偷懒,简化代码用的,例如:定义一个无符号长整型 数据 用变量替换类型名,使其成为该类型名的别名,可简化代码规模。 测试用例代码: 1.定义格式:(函数返回类型)(*指针变量)(函数参数列表) . 注:函数参数列表可只写类型 有两种定义:使用typedef重定义,或者不使用。测试代码均已给出; 2.用法 平时调用函数时:函数名(实参);得到了函数名地址后,可以用: 地址(实参)来调用函数。 测试结果:
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/21054.html