printf和scanf这两个函数我们经常在编写程序的过程中用到,printf函数还好理解,但是scanf呢,直接上代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*模拟对scanf函数的原理,直接对地址进行引用和修改,打破常规个函数之间互不影响的说法,这是直接对地址的传递*/
#include <stdio.h>
void f(int* p);
void g(int k);
int main()
{
int i = 6;
printf("&i=%p\n", &i);
f(&i);
g(i);
return 0;
}
void f(int *p)
{
printf("p=%p\n", p);
printf("*p=%d\n", *p);
*p = 26;
}
void g(int k)
{
printf("k=%d\n", k);
}

其实scanf这个函数难就难在它是对地址的运用,但我们学完指针之后,回来一看,其实也就那样不是吗。知识我们平时不愿意去细究它的原理,觉得知道怎么用就够了。但像这样子去细究它根本也很酷不是吗,有种在挖一些藏在我们很熟悉却总是习惯性忽略的宝藏的近视感。