帮忙解释一下这个指针有关问题
帮忙解释一下这个指针问题。1 #include iostream2 using namespace std3 int main()4 {5char *str[] {
帮忙解释一下这个指针问题。
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 char *str[] = {"welcome","to","fortemedia","nanjing"};
6 char **p = str + 1;
7 str[0] = (*p++) + 2;
8 printf("%s\n",str[0]);
9 return 0;
10 }
谁能帮我解释一下为什么str[0]指向了“nanjing”后面的元素?
[解决办法]
char **p = str + 1; // str数组名表示数组首地址,所以+1后,p指向了字符常量的"to"的't'的地址上;
str[0] = (*p++) +2 ; // *p指向字符't' +2后超出"to"的范围,是个空字符,如果此时是+1,则str[0]打印出来是个 o
[解决办法]
char **p = str + 1;
str[0] = (*p++) + 2;
p 一开始 +1
后来 +2
一共 +3
str+3 就是第四个元素
数组第四个元素 char* 指针指向 "nanjing"
[解决办法]
++
[解决办法]嗯 是的 的确是我弄错了 汗 误导人了 真该死
[解决办法]char *p[] <=/=> char (*p)[];
str+1 是指向第二个元素,不是到数组外面了