c语言最强大之处--指针
程序员文章站
2024-01-05 16:05:04
指针是与地址分不开的,提到指针就应该想到地址,因为在中指针变量所存放的值就是一个地址,通过这个值它可以指向这个地址的内存位置,也就可以通过这个指针变量来访问这个内存位置的内容。
定义一个指针变量的方...
指针是与地址分不开的,提到指针就应该想到地址,因为在中指针变量所存放的值就是一个地址,通过这个值它可以指向这个地址的内存位置,也就可以通过这个指针变量来访问这个内存位置的内容。
定义一个指针变量的方法和其他变量是一样的:
int *a;
char *b;
...
这里指针变量a是指向整形的指针,其中a的值是所指向的整形空间的四个字节的第一个字节的地址;b是指向字符型的指针,b的值是这个字符的地址。
对指针的初始化:
int a=123;
int *p=&a;
int *pi;
p=&a;
在这里定义了整形变量a,定义指针p、pi他们都指向a,上面的两种初始化方式都使它们指向a。
指针的操作:
通过一个指针访问它所指向的地址的过程称作间接访问或者指针的解引用,它的操作符是*。比如下面的定义
int a=12;
int b;
int *p;
p=&a;
b=*p;
定义指针p它指向变量a,如果想把a的值赋给b,可以通过指针p来操作,对指针p进行解引用*p就可以得到p所指向地址的内容,可以将a的值赋给b。
指针和数组:
数组名的值是一个指针常量,也就是数组第一个元素的地址,这时候对指针进行解引用和对数组进行下标访问是等价的,我们可以认为下标访问操作符[ ]和解引用操作符*是可以相互换使用的。
int arr[5]={1,2,3,4,5};
arr[0]的值是1
*arr的值也是1,它相当于*(arr+0)