C++指針學(xué)習(xí)詳解
指針的基本概念
指針的作用:可以通過指針間接的訪問內(nèi)存
- 內(nèi)存的編號(hào)從0開始記錄,一般使用十六進(jìn)制數(shù)字表示。
- 可以使用指針變量保存地址
- 指針=地址(簡單理解)
一、指針變量的定義和使用
指針變量定義語法: 數(shù)據(jù)類型* 變量名
#include<iostream> using namespace std; int main()//主函數(shù) {//定義指針 :數(shù)據(jù)類型*變量名 int a = 10; //使用指針 int* p;//創(chuàng)建指針 p = &a;//&取址符 cout << "a的地址為:" << &a << endl; cout << "指針P為:" << p << endl; //使用指針 //可以通過解引用 的方式 來找到 指針指向的內(nèi)存 //指針前 加*代表 解引用,找到指針指向的內(nèi)存中的數(shù)據(jù) *p = 1000; cout << "a=" << a << endl; cout << "*p=" << *p << endl; system("pause"); return 0; }
二、指針?biāo)嫉目臻g內(nèi)存
編譯環(huán)境行x64為 64位下 占8個(gè)字節(jié)
編譯環(huán)境行x86為 32位 則占4個(gè)字節(jié)
計(jì)算指針p所占的內(nèi)存:
#include<iostream> using namespace std; int main()//主函數(shù) {//定義指針 :數(shù)據(jù)類型*變量名 int a = 10; //int* p;//創(chuàng)建指針 //p = &a;//&取址符 int* p = &a; cout << "int* p的內(nèi)存為:" << sizeof(int* )<< endl; cout << "int* p的內(nèi)存為:" << sizeof(float*) << endl; cout << "int* p的內(nèi)存為:" << sizeof(double *) << endl; cout << "int* p的內(nèi)存為:" << sizeof(char*) << endl; system("pause"); return 0; }
1.空指針 野指針
空指針:指向編號(hào)為0的空間
用途:初始化指針
2. const修飾指針
三種指針
1.const 修飾指針 常量指針
指針的指向的值不可以修改,
指針的指向可以修改。
int a=10;
int b=0;
int *p=&a;
例如:*p=20;錯(cuò)誤,指針的指向的值不可以修改
int const *p=&b;對(duì)
2.指針常量
int * const p;
指針常量;
指針的指向不可以修改
指針的值可以修改;
3.const既可以修飾指針,又修飾常量
const int *const p=&a;
利用指針訪問數(shù)組中的每個(gè)元素.
#include<iostream> using namespace std; int main()//主函數(shù) { //利用指針訪問數(shù)組的元素 int arr[10] = {1,2,3,4,5,6,7,8,9,10}; cout << "輸出數(shù)組第一個(gè)元素" << arr[0]<<endl; int* p = arr;//arr就是數(shù)組的首地址 cout << "利用指針訪問第一個(gè)元素:" << *p << endl; p++;//讓指針向后偏移4個(gè)字節(jié) cout << "利用指針訪問第二個(gè)元素:" << *p << endl; //解引用 cout << "利用指針遍歷數(shù)組:" << endl; int* p2 = arr; for (int i = 0;i < 10; i++) { //cout << arr[i] << endl; cout << *p2 << endl; p2++; } system("pause"); return 0; }
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
編寫C語言程序進(jìn)行進(jìn)制轉(zhuǎn)換的問題實(shí)例
這篇文章主要介紹了編寫C語言程序進(jìn)行進(jìn)制轉(zhuǎn)換的問題實(shí)例,文中附錄了一個(gè)各種進(jìn)制間的轉(zhuǎn)換程序代碼,需要的朋友可以參考下2015-08-08C++使用智能指針實(shí)現(xiàn)模板形式的單例類
這篇文章主要為大家詳細(xì)介紹了C++使用了智能指針實(shí)現(xiàn)模板形式的單例類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06C語言實(shí)現(xiàn)Linux下的socket文件傳輸實(shí)例
這篇文章主要介紹了C語言實(shí)現(xiàn)Linux下的socket文件傳輸?shù)姆椒?較為詳細(xì)的分析了C語言文件Socket文件傳輸客戶端與服務(wù)器端相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-06-06C++中關(guān)鍵字Struct和Class的區(qū)別
這篇文章主要介紹了C++中關(guān)鍵字Struct和Class的區(qū)別,本文用大量實(shí)例講解了Struct和Class的區(qū)別,需要的朋友可以參考下2014-09-09