繁体   English   中英

C指针取消引用

[英]C pointer dereference

我在一个测试程序中编写了这些指令:

char *p;

然后

p="gibberish";

然后去打印p如下

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

因为没有初始化p地址,所以我打印了“乱码”,这让我感到惊讶。 运行代码时我期望出现错误,但是我没有...任何解释,请吗?

同样在使用带有指针的结构作为其字段时,例如

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

如何在虚拟变量dv取消对m引用? 我已经尝试过dv.m ,尽管我期望dv.(*m) ,但是它确实起作用了; 有什么解释吗?

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

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

这也是初始化:

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

指针也是变量

而“胡言乱语”是一个文字字符串(对此进行研究),您在这里正在做的事情

p="gibberish";

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

*第二个问题

指向何处的指针

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

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

    dv.m=&i;

然后取消引用指针printf(“%i”,* dv.m);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM