我正在读一本叫做《21天自学C语言》的书(我已经学会了Java和c#,所以我正在以更快的速度前进)。我正在阅读关于指针的章节,->(箭头)操作符没有解释就出现了。我认为它是用来调用成员和函数的(类似于。(点)操作符,但用于指针而不是成员)。但我不完全确定。
我能得到一个解释和一个代码样本吗?
我正在读一本叫做《21天自学C语言》的书(我已经学会了Java和c#,所以我正在以更快的速度前进)。我正在阅读关于指针的章节,->(箭头)操作符没有解释就出现了。我认为它是用来调用成员和函数的(类似于。(点)操作符,但用于指针而不是成员)。但我不完全确定。
我能得到一个解释和一个代码样本吗?
当前回答
#include<stdio.h>
struct examp{
int number;
};
struct examp a,*b=&a;`enter code here`
main()
{
a.number=5;
/* a.number,b->number,(*b).number produces same output. b->number is mostly used in linked list*/
printf("%d \n %d \n %d",a.number,b->number,(*b).number);
}
输出是5 5个5
其他回答
Dot是一个解引用操作符,用于连接结构的特定记录的结构变量。 例如:
struct student
{
int s.no;
Char name [];
int age;
} s1,s2;
main()
{
s1.name;
s2.name;
}
这样,我们就可以使用点运算符来访问结构变量
Foo ->bar只是(* Foo).bar的简写。这就是它的全部。
我不得不对杰克的程序做了一些小改动才能让它运行起来。在声明结构指针pvar后,将其指向var的地址。我在Stephen Kochan的C编程第242页上找到了这个解决方案。
#include <stdio.h>
int main()
{
struct foo
{
int x;
float y;
};
struct foo var;
struct foo* pvar;
pvar = &var;
var.x = 5;
(&var)->y = 14.3;
printf("%i - %.02f\n", var.x, (&var)->y);
pvar->x = 6;
pvar->y = 22.4;
printf("%i - %.02f\n", pvar->x, pvar->y);
return 0;
}
在vim中运行以下命令:
:!gcc -o var var.c && ./var
将输出:
5 - 14.30
6 - 22.40
#include<stdio.h>
struct examp{
int number;
};
struct examp a,*b=&a;`enter code here`
main()
{
a.number=5;
/* a.number,b->number,(*b).number produces same output. b->number is mostly used in linked list*/
printf("%d \n %d \n %d",a.number,b->number,(*b).number);
}
输出是5 5个5
A ->b是(* A)的缩写。B(对于函数也是一样:a-> B()是(*a). B()的缩写)。