scanf本身就是一个函数
指针:实质就是存地址的一个变量
int *p,q;定义了一个变量p;不过该变量是一个指针还有一个整型变量p。
*p可以做右值也可以做左值:
int k=*p; 表示将指针*p所指的地址处的变量数给了k
*p=k+; 表示对*p所指的地址处的变量进行赋值运算。
#include <stdio.h>2
void f(int *p); //以指针为参数进行传递,进行函数调用时参数应该为一个地址 ,如下的&i;
void g(int k);
int main(void) {
int i =6;
printf("&i=%p\n",&i); //%p输出地址
f(&i); g(i);
return 0;
}
void f(int *p) {
printf(" p=%p\n",p); //若调用该函数则i的地址已知,在此处对i赋新值,外面i的值则会随之改变,如下图中将*p=27,i也变为27.
}
void g(int k) {
printf("k=%d\n",k);
}
&i=0xbff17d70
p=0xbff17d70
k=6
[Finished in 0.7s]
这里的
printf("p=%p\n",p); //是p而不是*p因为p才是变量的名字只不过该变量是一个指针,存的是地址,当被定义时约定写为*p来表示一个变量而已
printf("p=%d\n",*p); //p存的是地址,*p表示该地址所存放的数