cs从入门到放弃 2022-01-07 10:41 采纳率: 100%
浏览 47
已结题

[C语言]二级指针的问题

C语言设计第五版——谭浩强279页关于二级指针的代码。
请问为什么

*p

以整数输出就是name[2]的值(即地址),而以字符串输出就是name[2]的值所指向字符串的内容?

int main()
{
    char *name[] = {"Follow Me", "BASIC", "GreatWall", "FORTRAN", "Computer design"};

    char **p;
    p = name + 2;
    printf("%d\n", *p);
    printf("%s\n", *p);
    return 0;
}

运行结果:

4210704
GreatWall
  • 写回答

4条回答 默认 最新

  • Code_流苏 C/C++领域优质创作者 2022-01-07 11:15
    关注

    一个指针指向的是另外一个指针,我们就称它为二级指针,或者指向指针的指针。指针变量也是一种变量,也会占用存储空间,也可以使用&获取它的地址。C语言不限制指针的级数,每增加一级指针,在定义指针变量时就得增加一个星号*。p1 是一级指针,指向普通类型的数据,定义时有一个 *;p2 是二级指针,指向一级指针 p1,定义时有两个 *。
    以整数输出就是name[2]的值(即地址),而以字符串输出就是name[2]的值所指向字符串的内容?
    为什么?因为p是字符类型指针,指向的是一个字符数组里的内容,所以你%s格式说明为字符串,就输出字符串,为其内容,%d格式说明为整数,因为指针变量存的就是地址(此处为二级指针,也是指针),所以地址。
    希望对题主有所帮助,望采纳!!

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

报告相同问题?

问题事件

  • 系统已结题 1月15日
  • 已采纳回答 1月7日
  • 创建了问题 1月7日

悬赏问题

  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划