我的c代码为p的每个输入提供相同的输出?


my c code giving same output for every input of p?

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>

int main(int argc, char **argv) {
    // your code goes here
    char *p;
    p ="hello";

    printf("%s",*&*&p);
    return 0;
}

它为p*&p*&*&p提供相同的输出。这怎么可能?


p是指向字符串"hello"的指针。&;P是P的地址,因此*&P将是P地址处的值,它也是指向字符串"hello"的指针。


*表示给出内存中这个位置的任何内容。&给出了这个对象的内存地址。

因此:p是字符串hello开始的地址。*&p是指给我P的位置(即hello起始的地址)。*&*&p是指给我P所在地的一切。

所以所有这些都给了你一个(2)。