什么是指针
在计算机中,每个变量都会在内存中分配一个空间,每种类型得变量所占得空间不同,(例如int型变量占用4个字节,而long long型变量占用8个字节),计算机中每个字节都会有一个地址,即变量存放的位置,而计算机就是通过地址找到某个变量的。
变量的地址一般指它占用的字节中第一个字节的地址。计算机上一个地址指向一个变量,可以通过地址来找到变量。
C语言中用“指针”来表示内存地址(或者称指针指向内存地址),如果这个内存地址恰好是某个变量的地址,那么称这个指针指向该变量。
在变量前面加上&,就表示变量的地址。
#include<stdio.h>
int main(){
int a=1;
printf("%d,%d",&a,a);
return 0;
}
指针变量
指针变量用来存放指针。可以把地址当作常量,然后定义一种指针变量来存放它,指针变量的定义需要在变量名前面加*。
指针变量存放的是地址,而&则是取地址运算符,因此给指针变量赋值的方式一般是把变量的地址取出来,然后赋给对应类型的指针变量。
int a;
int *p=&a;
int a;
int *p;
p=&a;
注意:int是指针变量的类型,后面的p才是变量名,用来存储地址,因此地址&a是复制给p而不是p的。
对一个指针变量存放的地址,如何得到这个地址所指的元素?假设定义了 int* p=&a,那么指针变量p就存放了a的地址。为了通过p来获得变量a,可以把视为一把开启房间的钥匙,将其加在p的前面,这样用p就可以获得变量a的值。
#include<stdio.h>
int main(){
int a=233;
int* p=&a;
printf("%d\n",*p);
return 0;
}
p保存的是地址,p是这个地址中存放的元素。直接对p进行赋值,也可以起到改变那个保存的元素的功能。
#include