[英]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"
的第一个字符。
对于第二个问题,假设dv
是struct 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.