指针/解除引用错误

时间:2015-12-28 17:26:54

标签: c

我想显示"字符串指针受影响"但是我收到了一个错误。这是我的代码:

#include<stdio.h>

main()
{
  char* *p;

  char * s="string pointer affected";

  *p=s;

  printf("%s",*p);
}

4 个答案:

答案 0 :(得分:6)

p并未指向任何已知位置,因此写入*p是一个坏主意。

你的意思是说:

p = &s;

答案 1 :(得分:5)

您取消引用未初始化的指针,导致未定义的行为。这是问题 -

*p=s;

答案 2 :(得分:4)

您在下面的行和printf语句中使用了未初始化的变量。如果你替换

*p = s;

p = &s;

然后它会起作用。

答案 3 :(得分:0)

尝试:

#include<stdio.h>

main()
{
    char *p; // <--------------------------

    char *s="string pointer affected";

    printf("===== s=%p\n", s);

    p=s;

    printf("===== p=%p\n", p);

    printf("%s\n", p);
}

原始代码的问题是p未初始化。所以你不能取消引用它。

如果你想使用指向指针的指针,首先分配指针,然后取其地址。

#include<stdio.h>

main()
{
    char *q;

    char **p = &q;

    char *s="string pointer affected";

    *p=s;

    printf("%s\n", *p);
}