cara_celia 2018-05-08 11:29 采纳率: 0%
浏览 1816
已采纳

c语言指针 指针数组 函数数组

图片说明
图片说明
图片说明
图片说明
图片说明
图片说明
想请教各位大佬这几个题中指针所代表的含义
如果能解释一下题目的解题过程就更好了 最近学指针 真的是被它搞得有点晕

  • 写回答

4条回答

  • CHScarlett 2018-05-08 14:39
    关注

    1.
    1.1 解题思路:定义一个字符串数组,数组内依次存放12个月份的英文名称,通过数组索引可将月份号与月份英文名称对应起来,即通过月份号-1对名称数组进行索引便可得到月份名称。
    1.2 指针含义:
    const char* months[] = {…}
    char const* months[] = {…}
    char* const months[] = {…}
    去掉const应该很容易理解,就是字符串指针数组,字符串通过字符串指针的形式表示。然后,再加上const进一步理解。Const表示常量,相当于限定符。Const加在类型变量定义前面,表示该类型变量是常量。
    第一个,加在char*前面,表示字符串指针指向的内容是常量,即字符串是常量,不能通过该指针修改字符串。第二个含义与第一个相同,但第一种形式更易理解,推荐第一种形式。第三个const在months前面,表示字符串指针months是常量,不能修改指针。
    Static表示变量为静态变量,其生存周期与全局变量相同。对于初学者记住其特性就行,即static变量只初始化一次,存在于整个程序运行期间。深层次理解,static变量存放于代码区,而不像局部变量那样生存于堆栈上。局部静态变量生存期不变,只是仅在局部可见。对于本例中,GetMonthName函数中的static变量尽在该函数中可见,外部无法访问该变量。相对于全局变量,其不会与外部区域定义的同名变量发生冲突。若两个全局变量同名,则编译时会发生错误。
    3.
    3.1 解题思路:排序采用经典的冒泡算法,即2遍扫描一个数组,比较相邻的两个数组元素,若不满足预设条件(如前一个小于后一个),则两者交换。
    Main()函数的过程为,先利用库函数strcmp作为预设条件,对strs[]数组前6个元素进行排序,然后输出排序后的结果。接着利用自定义函数str_cmp_n作为预设条件进行排序输出。
    程序中出现有两种指针类型,第一种与题1中的相同,即const char * valuename类型的指针,含义与题1相同。另外,若valuename后面有[], 即const char * valuename[]形式,表示是指针数组,指针数组中每个元素是一个指针,每一个指针指向一个字符串。第二种是一种比较高级的指针-函数指针,即int (*cmp),函数名称相当于一个全局变量,函数指针指向函数代码段的索引地址,通过函数指针,程序可以调到相应的代码区域执行代码。对于初学者,了解即可。

    2.
    2.1 解题思路:main()函数的思路题目中已经介绍,不再赘述。介绍一下Sort函数的思路,Sort函数仍然采用冒泡算法,只不过元素交换采用交换指针的方式,即通过交换指向两个元素的指针实现元素交换。
    本题中出现了字符串指针、指针数组以及const指针数组,其都可以看作字符串指针的变形。
    Char * str为字符串指针,未加const限制,指针值和指针指向的内容都可以改变;
    Const char* str加了const限制,指针值可以改变,但指针指向的字符串不可以改变;
    Const char* str[]为字符串指针数组,数组的每一个元素是一个指针,指针指向的字符串不能改变;但指针的值是可以改变的。
    Char str[][]为二维指针数组,数组元素的索引只能通过str指针加上偏移量实现,意味着无法实现指针值的改变。
    在Sort函数中,元素交换的代码是
    const char* t = strs[i];
    strs[i] = strs[j];
    strs[j] = t;
    这里strs[i], strs[j], t都是指针,交换的是指针的值,并不是指针指向的字符串。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题