记录学习理解所得
// 第一个字符串: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列地址