在C语言中使用变量,首先要对变量进行声明。声明变量很简单,只要告诉编译器变量的类型和名字就可以了。例如:

int a; //声明了一个int类型的变量

声明变量的作用就是告诉编译器,我需要在程序中用到一个名字叫做a的整型变量。如果我们不声明变量a,那么编译器在遇到a时就不知道这是什么东西,自然没有办法编译。

在学习C语言的时候,我们会接触到一个概念,叫做变量的地址。什么是地址呢?

如果我们能够化身为一个bit走进内存的世界去看一看的话,就会看到内存就像是一个非常大的社区,有着数不清的小格子,每个小格子里面都住着一个bit,它们要么是0,要么是1。计算机并不是给每个格子编一个号码,而是每8个格子组合在一起,叫做一个字节,然后给每一个字节从0开始编一个号码,这个号码叫做这个字节在内存中的地址。

如果一个变量只占一个字节,那么变量的地址就是这个字节的地址。

如果一个变量占了多个字节,例如int a占用了四个字节,那一般情况下将这四个字节中最低的那个字节的地址作为a的地址。如果要对a进行读写,从这个地址开始一次性读写四个字节就可以了。

编译器有个小本本,变量a的地址分配好后,编译器就记下“变量a的地址为xxxx”,以后再碰到变量a的时候,就查一下小本本上的地址,就可以找到a啦。

要查看a的地址是什么,我们需要用一个运算符&,这个运算符叫做取地址运算符。&a就代表取出变量a的地址。变量的地址实际上就是一个整数,在64位系统上的话,有8个字节。我们实际看一下a被分配到了哪里,写一小段代码:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a;
    printf("%p\n",&a);   //用%p输出a的地址
    system("pause");
    return 0;
}

注意这里我们使用的转换说明符为%p,(其实%d或者%x,%X也可以。%d输出十进制的整数,%x和%X输出十六进制的整数)%p一般用于输出地址,它输出的是十六进制整数,而且会在前面补0。输出结果如下:

变量a的地址

看,确实输出了变量a的地址,是61FE1C。

更多推荐

C语言学习日记(6)——变量和地址