指針(pointer)簡介
指針是一個值爲內存地址的變量
例如
int year;
year = 2016;
定義一個整型變量,系統就給這個整個變量分配了一個內存空間,這個內存空間的名字叫做year,空間裏的值爲2016,內存在計算機中的地址爲0028FF44(計算機中的內存地址一般用16進製表示)。
int* ptr_year; //ptr_year爲一個變量,可以把int*看作是一種數據類型,一種指向地址的數據類型
ptr_year=&year // "&"爲取地址符,相當於把變量year的地址取出來賦給ptr_year這個變量,賦值時一定要用&取地址符,而不能使用常量進行直接賦值
上圖即爲原理流程圖
基本用法:
數據類型* 指針變量名;
例如:
int* ptr_year;
char* ptr_name;
float* ptr_score;
間接運算符 * 在聲明指針變量時和在對地址操作時的作用是不同的
int num;
num = 1; //定義一個整型變量,並賦初值爲5
int* ptr_num; //這個星號表示的是ptr_num是一個指針變量
ptr_num = # //定義一個指針變量,指向num num的值爲1
*ptr_num = 1111; //把20賦值給*ptr_num地址所對應空間, num的值變爲1111
單獨一個*加上一個指針表示的是對這個指針所對應的的空間進行操作
注意:
指針的變量的命名規則和其他變量的命名規則一樣
指針不能與現有變量同名
指針可存放c語言中的任何基本數據類型,數組和其他所有高級數據結構的地址
若指針已聲明爲指向某種類型數據的地址 ,則它不能用於存儲其他類型數據的地址
應爲指針指定一個地址後,才能在語句中使用指針
在頭文件<stdio.h>中,NULL被定義爲常量
int* pr_num = NULL; //表示指針的初值爲空,表示指針不指向任何地址