MatrixLab. 2022-02-22 20:40 采纳率: 100%
浏览 29
已结题

问一个关于c语言的问题:为什么函数里用**p接收数组名a?

img


看一下图片,为什么函数里用**p接收数组名a?对(char **p)不是很理解。

  • 写回答

3条回答 默认 最新

  • yun6853992 2022-02-22 20:57
    关注

    你需要了解这几个知识点:
    1:char * p;表示的初始化, p指向的是一个char变量的地址。
    2:char a[]; char数组,如果单纯的写数组名a,其实就是数组的首地址。 比如char a[] = "abc"; printf("%s \n",a); a其实指向的是数组的首地址
    3:结合起来理解 char *a[],其实就是二维数组,而a其实是二维数组的首地址,*p是第一个字符串的位置
    4:函数传参时 定义成char *p;传入参数一维数组char a[];的数组名a;,隐含的含义就是数组的首地址的位置 char **你可以理解为取一维数组a的地址的地址,而char a[]; a隐含的是一个地址,char * a[];换个角度就是存储了一个一维数组地址的char *类型,

    有点绕,可能我也说不清,char *p;p执向的是一个地址,char ** p;p执行的是一个地址的地址; char a[] = "abc";数组a隐含a指向数组的首地址,然后char *a[];指向数组首地址的地址,然后按地址+1,其实就是,移动的其实就是一个数组位。(可以用指针的方式打印这个二维数组内的字符串理解一下)

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

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月22日
  • 创建了问题 2月22日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。