欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

手把手帶你搞懂C語(yǔ)言指針

 更新時(shí)間:2021年08月26日 16:11:43   作者:寶全哥哥  
這篇文章主要介紹了C語(yǔ)言的指針,本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下,希望能給你帶來幫助

前言

自學(xué)筆記,沒有歷史知識(shí)鋪墊(省略百度部分),C語(yǔ)言指針的使用

一、概念

1.*指針

指針: 內(nèi)存資源的地址指針
變量:存放指針的盒子 32位操作系統(tǒng)中,其大小位32bit,即4個(gè)字節(jié),64位為64bit,即8個(gè)字節(jié),與指針數(shù)據(jù)類型無關(guān)
指針的數(shù)據(jù)類型: 表示指針要讀取的地址字節(jié)數(shù),如:char *p;讀取1個(gè)字節(jié),int *p讀取4個(gè)字節(jié),具體選擇根據(jù)指向的變量調(diào)整
指針指向的內(nèi)存空間一定要合法(存在,且有讀的權(quán)限)

int main()
{
    int *p1;
    char *p2;
    //p1:4,p2:1 
    printf("p1:%lu,p2:%lu \n",sizeof(*p1),sizeof(*p2));
    return 0;
}

指針變量的寫法:*p_xx
指針變量通常以*p_開頭,是英文指針Pointer的首字母

2.&取址

&a 變量a的內(nèi)存地址

int main()
{
    int a = 12312312;
    int *p1;
    p1 = &a;
    //*p1指針指向變量的值:12312312,p1指向的內(nèi)存地址E9C4AE18(等價(jià)于&a)
       printf("*p1:%d,p1指向的內(nèi)存地址%X",*p1,p1);
    return 0;
}

二、指針修飾符

1.const 常量指針

const char *p; 從右往左理解: *p指針 char指向1個(gè)字節(jié)的內(nèi)容 const該字節(jié)內(nèi)容為只讀 場(chǎng)景:描述字符串
char *const p; 從右往左理解:*p指針 const指針方向?yàn)橹蛔x(無法切換) char指向的內(nèi)容是1字節(jié),內(nèi)容允許修改 場(chǎng)景:硬件資源
const char *const p; 結(jié)合了上面1和2的限制,指針方向?yàn)橹蛔x,指向的內(nèi)容為只讀 場(chǎng)景:ROM設(shè)備

//以下兩個(gè)寫法的作用是一樣的
const char *p;
char const *p;
//以下兩個(gè)寫法的作用是一樣的
char *const p;
char *p const;

2.volatile 特征指針

volatile char *p;防止優(yōu)化指向內(nèi)存地址(阻止指令重排)

3.typedef 別名指針

為指針起別名,復(fù)雜的指針場(chǎng)景使用,提高代碼可讀性
typedef char *xx_p

三、指針運(yùn)算

1. ++ -- + -

指針的運(yùn)算都是指向地址的運(yùn)算,最小單位為當(dāng)前指針變量的數(shù)據(jù)類型所占的內(nèi)存大小
如:p+1的效果為0x20+1*(sizeof(p))

2.[] 標(biāo)簽訪問

指針指向的內(nèi)存位置,標(biāo)簽?zāi)J(rèn)為0,及:p[0]
標(biāo)簽訪問一般用于非線性訪問,如:訪問當(dāng)前指針指向內(nèi)存位置的后邊第二個(gè)位置p[2]效果為*(p+2)
使用標(biāo)簽訪問,則取出的是標(biāo)簽內(nèi)存里的值,而不是地址
C語(yǔ)言的標(biāo)簽化默認(rèn)是允許越界的,甚至用標(biāo)簽掃描整個(gè)內(nèi)存,修改不同應(yīng)用的屬性

int main()
{
    int a = 0x123;
    int a1 = 0x134;
    int a2 = 0x145;
    int *p;
    p = &a1;
    //*p:134 ,*(p-1):145 ,p[-1]:145,p[1]:123 
    printf("*p:%X ,*(p-1):%X ,p[-1]:%X,p[1]:%X \n",*p,*(p-1),p[-1],p[1]);
    return 0;
}

四、指針邏輯操作

>= == <= != 指針可以做邏輯操作,比較大小,但實(shí)際運(yùn)用的比較少
p1 > p2 指針?biāo)嫉牡刂繁容^,意義不大
p1 == n 一般跟一個(gè)特殊值比較,比如p1 == 0x0,地址的無效值,結(jié)束標(biāo)識(shí),表示p1處理完了
*p1 > *p2 實(shí)際上是指向變量值的比較

注意:
指針必須是同類型比較才有意義

總結(jié)

本章主要為C語(yǔ)言指針

Segmentation fault 段錯(cuò)誤異常,通常是指針指向問題引起

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • C++實(shí)現(xiàn)將長(zhǎng)整型數(shù)轉(zhuǎn)換為字符串的示例代碼

    C++實(shí)現(xiàn)將長(zhǎng)整型數(shù)轉(zhuǎn)換為字符串的示例代碼

    這篇文章主要介紹了C++實(shí)現(xiàn)將長(zhǎng)整型數(shù)轉(zhuǎn)換為字符串的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • c++ 智能指針基礎(chǔ)詳解

    c++ 智能指針基礎(chǔ)詳解

    這篇文章主要介紹了c++ 智能指針基礎(chǔ)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下
    2021-02-02
  • 新舊MFC版本實(shí)現(xiàn)CEdit透明的2種方法的實(shí)例代碼

    新舊MFC版本實(shí)現(xiàn)CEdit透明的2種方法的實(shí)例代碼

    新舊MFC版本實(shí)現(xiàn)CEdit透明的2種方法的實(shí)例代碼,需要的朋友可以參考一下
    2013-03-03
  • C語(yǔ)言實(shí)現(xiàn)手寫Map(數(shù)組+鏈表+紅黑樹)的示例代碼

    C語(yǔ)言實(shí)現(xiàn)手寫Map(數(shù)組+鏈表+紅黑樹)的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C語(yǔ)言實(shí)現(xiàn)手寫Map(數(shù)組+鏈表+紅黑樹),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定借鑒價(jià)值,需要的可以參考一下
    2022-09-09
  • C語(yǔ)言--數(shù)字交換題目詳解

    C語(yǔ)言--數(shù)字交換題目詳解

    本文通過代碼給大家介紹c語(yǔ)言數(shù)字交換的題目,通過實(shí)例代碼給大家講解的很詳細(xì),具有一定的參考借鑒價(jià)值,對(duì)c語(yǔ)言感興趣的朋友一起看看吧
    2021-08-08
  • 如何利用Emacs來調(diào)試C++程序

    如何利用Emacs來調(diào)試C++程序

    本文給大家分享的是使用編輯器中的神器Emacs來調(diào)試C++程序的方法,非常的細(xì)致全面,有需要的小伙伴可以參考下
    2016-03-03
  • C++使用waveIn實(shí)現(xiàn)聲音采集

    C++使用waveIn實(shí)現(xiàn)聲音采集

    在Windows上實(shí)現(xiàn)錄音比較簡(jiǎn)單的方法是使用winmm,其中的waveIn模塊就可以打開錄音設(shè)備,這篇文章主要為大家介紹了C++如何使用waveIn實(shí)現(xiàn)聲音采集,需要的可以了解下
    2023-10-10
  • 一篇文章了解c++中的new和delete

    一篇文章了解c++中的new和delete

    C語(yǔ)言提供了malloc和free兩個(gè)系統(tǒng)函數(shù),完成對(duì)堆內(nèi)存的申請(qǐng)和釋放,而C++則提供了兩個(gè)關(guān)鍵字new和delete,下面這篇文章主要給大家介紹了如何通過一篇文章了解c++中new和delete的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • C和C++11之enum枚舉的具體使用方法

    C和C++11之enum枚舉的具體使用方法

    這篇文章主要介紹了C和C++11之enum枚舉的具體使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • C語(yǔ)言撲克牌游戲示例

    C語(yǔ)言撲克牌游戲示例

    大家好,本篇文章主要講的是C語(yǔ)言撲克牌游戲示例,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12

最新評(píng)論