我在测试程序中写了这些说明:
char *p;
然后
p="gibberish";
然后按如下方式打印p
printf("%s\n", p);
由于p地址没有初始化,我得到了“胡言乱语”的打印,让我感到惊讶;我在运行代码时遇到了一个错误,但是我没有......有任何解释吗?
当使用带指针的结构作为其字段时,例如
struct dummy
{
int *m;
....
}
如何在虚拟变量m
中取消引用dv
?我尝试dv.m
虽然我期待dv.(*m)
,但确实有效。请问有什么解释吗?
答案 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);