指针简介
指针是一个值为内存地址的变量
基本用法
数据类型*指针变量名;
int*ptr_num=NULL;
指针的初值为空,表示指针不指向任何地址
取地址符&
取值*
指针同样是一个变量,只不过该变量中存储的是另一个对象的内存地址
如果一个变量存储另一个对象的地址,则称该变量指向这个对象
指针变量可以赋值,指针的指向在程序执行中可以改变
指针P在执行中的某时刻指向变量X,在另一时刻也可以指向变量Y
指针变量的命名规则和其他的变量命名规则一样
指针不能与现有的变量名一样
指针可存放C语言中任何基本数据类型
若指针已声明指向某种数据类型,则它不能用于其他所有高级数据结构的地址
应为指针声明一个地址后,才能在语句中使用指针
指针与数组
数组是一块连续的内存空间
数组名就是这个连续内存空间的首地址
指针的算术运算
一个类型为T的指针的移动,以sizeof(T)为移动单位
指针可以加上或减去某个整数值
数组与指针小结
int num[50]; num数组名,也是数组的首地址
num的值与&num[0]的值是相同的
数组第i+1个元素可表示为
第i+1个元素的地址为:&num[i+1]或,num+i+1
第i+1个元素的值为:num[i+1]或*(num+i+1)
为指向数组的指针赋值
int*ptr_num=num;或int*ptr_num=&num[0];
指针变量可以指向数组元素
int*ptr_num=&num[4]或int*ptr_num=num+4;
num[i][j]=*(*(num+i)+j)