内存中每一个字节都有一个编号,这个编号叫做地址。
1 scanf("%d",&a);
首先,将a的地址给scanf函数,然后函数先把a的地址保存起来,然后从键盘接收数据通过存储的a的地址保存到a变量中。
指针是存放地址的:
1 int *i_pointer; 2 i_pointer=&i; 3 //假设i的地址为0x001,则i_pointer中存放的是0x001。
* 叫做取值操作符;& 叫做取址操作符
指针和指针变量:把一个变量的地址称为指针,c语言中的一些特殊的变量专门存放变量的地址称这些变量称为指针变量。
1 int i=2000; //定义一个变量 2 int *i_pointer;//定义一个指针变量 这里的*表示i_pointer是一个指针变量 3 i_pointer=&i;//&i是将i的地址赋值给指针变量i_pointer 4 printf("%d\n",*i_pointer);//输出值为2000,这里的*表示指针,即可以通过指针变量里面i的地址取到i变量的值
举例分析:
1 #include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5 int a,b; //定义两个变量a,b 6 int *i_pointer1,*i_pointer2;//定义两个指针变量i_pointer1,i_pointer2 7 a=100; 8 b=10; //给a b 变量分别赋值 9 i_pointer1=&a; 10 i_pointer2=&b;//将a和b变量的地址分别赋值给两个指针变量 11 printf("%d,%d\n",a,b);//输出a,b的值 12 printf("%d,%d\n",*i_pointer1,*i_pointer2);//通过指针找到指针变量中的a和b的地址然后得到值 13 return 0; 14 }
示意图如下: