指針的的基本概念
指針(pointer)是一個值爲內存地址的變量(或數據對象)
內存地址一般使用16進制來表示。通俗的理解爲,變量就是一個內存,內存肯定有內存地址,而我們的指針就是來保存這個內存地址的變量。
1、基本用法
數據類型*指針變量名;
例如
int*ptr_num
char*ptr_name;
float*money_ptr;
double*p_price;
注意:在頭文件stdio.h中,NULL被定義爲常量,int*ptr_num=NULL;指針的初始值爲空,表示指針不指向任何地址
2、取地址符&
int num=1024;
int *ptr_num=#
//%p 一個指針類型的佔位符
//%x 16進制佔位符
printf("num變量的地址是:%p\n",ptr_num);
return 0;
打印輸出00ff2345,注意:此處不能直接賦值常量。
3、間接運算符
*ptr_num=1111;
表示根據內存地址找到相應地址的空間,這個空間的值是1111
int num=1024;
int * ptr_num=#
//指針的地址,地址不一樣了
int * ptr_num2=&ptr_num;
//%p 一個指針類型的佔位符
//%x 16進制佔位符
printf("num變量的地址是:%p\n",ptr_num);
printf("*ptr_num對應的值是:%d\n",*ptr_num);
*ptr_num=9999;//重新賦值爲9999;
//如何通過指針的指針,訪問到原指針指向的空間
printf("\n原空間num對應的值是:%d\n",**ptr_num2);//兩個百分號
return 0;
輸出1024,表示這個地址所對應的空間裏面的值是1024,最後變成9999。
4、指針的使用實例
int num = 10;
int * ptr_num;
ptr_num=#
* ptr_num=>num;
int *ptr_num2;
ptr_num2=ptr_num;//兩個指針都指向同一塊內存
*ptr_num2=99;//等價寫法:num=99;
1、指針就是一個變量,只不過該變量中存儲的是另一個對象的地址
2、如果一個變量存儲另一個對象的地址,則稱該變量指向這個對象
3、指針變量可以賦值,指針的指向在程序中可以改變
4、指針可存放C語言中的任何基本數據類型,數組以及其他所有高級數據結構的地址
5、若指針已經聲明指向某種類型數據的地址,則它不能用於存儲其他類型數據的地址
6、應爲指針指定一個地址後,才能在語句中使用指針。