一,变量
C语言中定义一个变量之后,就可以知道两个信息:1变量的名字,2变量的地址(即它在储存单元的位置)。就像旅客住进酒店之后,酒店便知道了旅客的名字和门牌号这两个信息一样。
形如:
int a =3;
这样就定义了一个INT型变量,它的名字叫一个,它的值为3;
当对变量赋值时,是通过这样的操作:
int a;
scanf("%d",&a);
注意“&”取地址符。对一个变量赋值时,在Ç语言中会先按地址找到这个变量,然后再将值赋,即在此需先取得一个的地址,即先找到一个的内存中的位置,然后赋给它值,这种赋值方法是计算机科学中的一种惯例。
例如若服务员要给旅客送物品,如果告诉仅仅服务员旅客的名字,服务员几乎不可能找到这位旅客;但如果告诉服务员旅客的门牌号,那么就能很快就能找到.C语言中也一样,对任何一个变量的操作都不是依赖变量名,而是依靠其地址,因为变量名可以随意更改,但一个变量一旦定义其地址就在内存或寄存器中固定了下来。
例如,对以下两个变量输出它的地址
#include <stdio.h>
int main (){
int a;
char b[5];
printf("a 变量的地址: %p\n", &a);
printf("b 变量的地址: %p\n", &b);
return 0;
}
二,指针
指针是Ç语言的特色,号称初学者的第一噩梦,许多人都让指针造成了巨大的心理阴影,下面就来了解一下。
首先,指针是一个概念,指针变量是具体实现,这一点先不要弄混。指针变量是专门用来储存地址的变量。
指针变量的值是另一个变量的地址。前文提到,对变量的操作必须依靠变量的地址,而如果每次都通过&来取得一个变量的地址,实在有些繁琐,所以了设立指针变量这一个变量专门来储存某一个变量的地址。
int *p;
这样就定义了一个INT型指针P,它就可以储存一个INT型变量的地址
int a,*p;
p = &a;
#include<stdio.h>
int main(){
int a = 3;
int *p;
p = &a; //p的值就是变量a的地址
printf("a的地址是%8d\np的地址为%8d\n*p的值为 %8d\n",&a,p,*p);
return 0;
}
运行结果
即p的值为a的地址,如若求一个的值则可通过* p来取得,即* p和a等价。