我是C的新手并试图理解C的指针概念。任何人都可以帮助我,这些功能有何不同?
#include<stdio.h>
func1(int *p){
printf("%d",*p);
}
func2(int *p){
printf("%d",*p);
}
func3(int *p){
printf("%d",*p);
}
void main(){
int p=3;
func1(&p);
func2(*p);
func3(p);
}
答案 0 :(得分:2)
3个功能是相同的。不同之处在于你传递给他们的论点。
&amp; p :获取变量p的引用(内存地址)。
* p :假设p是内存地址并获取存储在该位置的值。在这种情况下,您将获得一个sigsev,因为您正在尝试访问内存系统的第3位。
p :获取p,在这种情况下为3。
函数接收指针,并将该位置的值存储打印为整数。
答案 1 :(得分:0)
这三个函数期望指向int
的指针。在第一次通话中,你只提供这样的指针。
&p
是指向int
的指针。
*p
是int
的(非法)解除引用。
p
是普通的int
。