查找地址:&运算符
指针是你C语言中最为重要的(有时也是最复杂的)概念之一)用于储存变量的地址,前面使用的scanf函数中就是用地址作为参数。概括地说,如果主调函数不使用return返回的值,则必须通过地址才能修改主调函数中的值。
一元&运算符给出变量的存储地址。如果pooh是变量名,那么&pooh是变量的地址,可以把地址看作是变量在内存中的位置,假设有下面语句:pooh=24;
假设pooh的存储地址是0B76(PC地址通常用十六进制形式表示)。那么,下面语句 :
printf("%d %p\n",pooh,&pooh);
将输出的内容如下(%p是输出地址的转换说明)
24 0B76
下面程序使用了这个运算符查看不同函数中的同名变量分别储存在什么位置
//loccheck.c--查看变量被储存在何处
#include <stdio.h>
void mikado(int); //函数原型
int main(void)
{
int pooh = 2, bah = 5; //main()的局部变量
printf("in main(),pooh=%d and &pooh=%p\n", pooh, &pooh);
pirntf("in main(),bah=%d and &bah=%p\n", bah, &bah");
mikado(pooh);
return 0;
}
void mikado(int bah) //定义函数
{
int pooh = 10; //mikado()局部变量
printf("in mikado(),pooh=%d and &pooh=%p\n", pooh, &pooh);
pirntf("in mikado(),bah=%d and &bah=%p\n", bah, &bah");
}
系统输出如下
in main(),pooh=2 and &pooh=0x7fff5fbf8e8
in main(),bah=5 and &bah=0x7ffff5fbf8e4
in mikado(),pooh=10 and &pooh=0x7fff5fbff8b8
pirntf("in mikado(),bah=2 and &bah=0x7ffff5fb8bc
实现不同,%p表示地址的方式也不同。然而,许多实现豆乳本例所示,以十六进制显示地址、每个十六进制水对应4位,该列先试试12个十六进制数,对应48个地址