C指针取消引用

时间:2013-12-08 08:10:05

标签: c

我在测试程序中写了这些说明:

char *p;

然后

p="gibberish";

然后按如下方式打印p

printf("%s\n", p);
由于p地址没有初始化,我得到了“胡言乱语”的打印,让我感到惊讶;我在运行代码时遇到了一个错误,但是我没有......有任何解释吗?

当使用带指针的结构作为其字段时,例如

struct dummy
{
int *m;
....
}

如何在虚拟变量m中取消引用dv?我尝试dv.m虽然我期待dv.(*m),但确实有效。请问有什么解释吗?

3 个答案:

答案 0 :(得分:4)

对于第一个问题,第p="gibberish"行初始化p以指向字符串"gibberish"的第一个字符。

对于第二个问题,假设dv的类型为struct dummy而不是struct dummy *类型,您希望*(dv.m)推荐指针。

答案 1 :(得分:0)

这也是初始化:

int main()
{
    int t=3;
    int* p;
    p=&t; /* intitialization */
}

答案 2 :(得分:0)

指针也是变量,

和" gibberish"是一个文字字符串(研究它), 你在这做什么

p="gibberish";

获取该文字字符串的地址并分配给 p 指针

*第二个问题

指向某事的指针

struct dummy dv;
int i =2;
dv.m=&i;
printf("%i",*dv.m);

首先,您必须创建要指向的内容,然后将其指定给指针

    dv.m=&i;

然后引用指针     的printf("%I",* dv.m);