指针和字符串、二维的关系

记录学习理解所得
// 第一个字符串:First
// 第二个字符串:Second
// 第三个字符串:Third
定义:char *strs[2] = {“First”,“Second”,“Third”}; //也可以写成char **strs

输出第一个字符串 “First”: *strs 或者 strs[0]
输出第一个字符串首字符 ‘F’: **strs 或者 *strs[0]
输出第一个字符串第二个字符 ‘i’: *(*strs+1) 或者 *(strs[0]+1)
输出第一个字符串第n个字符: *(*strs+n) 或者 *(strs[0]+n)

输出第二个字符串 “Second”: *(strs+1) 或者 strs[1]
输出第二个字符串首字符 ‘S’: **(strs+1) 或者 *strs[1]
输出第二个字符串第二个字符 ‘e’: *( * (strs+1)+1) 或者 *(strs[1]+1)
输出第二个字符串第n个字符: *( * (strs+1)+n) 或者 *(strs[1]+n)

sizeof(*strs) = 8(64位OS)、或者4(32位OS) //表示地址是多少位
sizeof(**strs) = 1;

和二维数组的关系:
*strs是指针,其类型是char * ,其指向的类型是 char, 所以 *strs+1,就是加了一个char的大小,所以对应二维数组,*strs就是列地址;
strs是指针,其类型是char * *,其指向的类型就是char * ,所以strs+1就是加一个char *的大小,所以对应的二维数组 strs就是行地址;

&strs[n] //即为第n行首地址
&(strs[n]+m) //即为第n行第m列地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值