亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語言指針數(shù)組案例詳解

 更新時(shí)間:2021年07月01日 16:11:25   作者:chenguijia  
這篇文章主要介紹了C語言指針數(shù)組案例詳解,本文通過案例詳細(xì)的解釋了指針與數(shù)組的初始化還有關(guān)系與應(yīng)用,需要的朋友可以參考下這篇文章

指針與數(shù)組是 C 語言中很重要的兩個(gè)概念,它們之間有著密切的關(guān)系,利用這種 關(guān)系,可以增強(qiáng)處理數(shù)組的靈活性,加快運(yùn)行速度,本文著重討論指針與數(shù)組之 間的聯(lián)系及在編程中的應(yīng)用。

1.指針與數(shù)組的關(guān)系 當(dāng)一個(gè)指針變量被初始化成數(shù)組名時(shí),就說該指針變量指向了數(shù)組。如: char str[20], *ptr;
ptr=str;
ptr 被置為數(shù)組 str 的第一個(gè)元素的地址,因?yàn)閿?shù)組名就是該數(shù)組的首地址, 也是數(shù)組第一個(gè)元素的地址。此時(shí)可以認(rèn)為指針 ptr 就是數(shù)組 str(反之不成立), 這樣原來對數(shù)組的處理都可以用指針來實(shí)現(xiàn)。如對數(shù)組元素的訪問,既可以用下 標(biāo)變量訪問,也可以用指針訪問。

2.指向數(shù)組元素的指針 若有如下定義:
int a[10], *pa;
pa=a;
則 p=&a[0]是將數(shù)組第 1 個(gè)元素的地址賦給了指針變量 p。
實(shí)際上,C 語言中數(shù)組名就是數(shù)組的首地址,所以第一個(gè)元素的地址可以用 兩種方法獲得:p=&a[0]或 p=a。
這兩種方法在形式上相像,其區(qū)別在于:pa 是指針變量,a 是數(shù)組名。值得 注意的是:pa 是一個(gè)可以變化的指針變量,而 a 是一個(gè)常數(shù)。因?yàn)閿?shù)組一經(jīng)被 說明,數(shù)組的地址也就是固定的,因此 a 是不能變化的,不允許使用 a++、+
+a 或語句 a+=10,而 pa++、++pa、pa+=10 則是正確的。由此可見,此時(shí) 指針與數(shù)組融為一體。

3.指針與一維數(shù)組 理解指針與一維數(shù)組的關(guān)系,首先要了解在編譯系統(tǒng)中,一維數(shù)組的存儲(chǔ)組
織形式和對數(shù)組元素的訪問方法。 一維數(shù)組是一個(gè)線形表,它被存放在一片連續(xù)的內(nèi)存單元中。C 語言對數(shù)組
的訪問是通過數(shù)組名(數(shù)組的起始地址)加上相對于起始地址的相對量(由下標(biāo) 變量給出),得到要訪問的數(shù)組元素的單元地址,然后再對計(jì)算出的單元地址的 內(nèi)容進(jìn)行訪問。通常把數(shù)據(jù)類型所占單元的字節(jié)個(gè)數(shù)稱為擴(kuò)大因子。
實(shí)際上編譯系統(tǒng)將數(shù)組元素的形式 a[ i]轉(zhuǎn)換成*(a+i),然后才進(jìn)行運(yùn)算。 對于一般數(shù)組元素的形式:<數(shù)組名>[<下標(biāo)表達(dá)式>],編譯程序?qū)⑵滢D(zhuǎn)換成:* (<數(shù)組名>+<下標(biāo)表達(dá)式>),其中下標(biāo)表達(dá)式為:下標(biāo)表達(dá)式*擴(kuò)大因子。整個(gè) 式子計(jì)算結(jié)果是一個(gè)內(nèi)存地址,最后的結(jié)果為:*<地址>=<地址所對應(yīng)單元的地 址的內(nèi)容>。由此可見,C 語言對數(shù)組的處理,實(shí)際上是轉(zhuǎn)換成指針地址的運(yùn)算。
數(shù)組與指針暗中結(jié)合在一起。因此,任何能由下標(biāo)完成的操作,都可以用指 針來實(shí)現(xiàn),一個(gè)不帶下標(biāo)的數(shù)組名就是一個(gè)指向該數(shù)組的指針。

4.指針與多維數(shù)組 用指針變量可以指向一維數(shù)組,也可以指向多維數(shù)組。但在概念上和使用上,
多維數(shù)組的指針比一維數(shù)組的指針要復(fù)雜一些。 例如,在一個(gè)三維數(shù)組中,引用元素 c[ i][j][k]的地址計(jì)算最終將換成:
*(*(*(c+i)+j)+k)。了解了多維數(shù)組的存儲(chǔ)形式和訪問多維數(shù)組元素的內(nèi) 部轉(zhuǎn)換公式后,再看當(dāng)一個(gè)指針變量指向多維數(shù)組及其元素的情況。
1 指向數(shù)組元素的指針變量

若有如下說明: int a[3][4]; int *p;
p=a;
p 是指向整型變量的指針;p=a 使 p 指向整型二維數(shù)組 a 的首地址。
*(*(p+1)+2)表示取 a[1][2]的內(nèi)容;*p 表示取 a[0][1]的內(nèi)容,因?yàn)?p 是指向整型變量的指針;p++表示 p 的內(nèi)容加 1,即 p 中存放的地址增加一個(gè) 整型量的字節(jié)數(shù) 2,從而使 p 指向下一個(gè)整型量 a[0][1]。
2 指向由 j 個(gè)整數(shù)組成的一維數(shù)組的指針變量
當(dāng)指針變量 p 不是指向整型變量,而是指向一個(gè)包含 j 個(gè)元素的一維數(shù)組。 如果 p=a[0],則 p++不是指向 a[0][1],而是指向 a[1]。這時(shí) p 的增值以一維 數(shù)組的長度為單位。
5.指針與字符數(shù)組
C 語言中許多字符串操作都是由指向字符數(shù)組的指針及指針的運(yùn)算來實(shí)現(xiàn) 的。因?yàn)閷τ谧址畞碚f,一般都是嚴(yán)格的順序存取方式,使用指針可以打破這 種存取方式,更為靈活地處理字符串。
另外由于字符串以′\0′作為結(jié)束符,而′\0′的 ASCII 碼是 0,它正好是 C 語言的邏輯假值,所以可以直接用它作為判斷字符串結(jié)束的條件,而不需要用 字符串的長度來判斷。C 語言中類似的字符串處理函數(shù)都是用指針來完成,使程 序運(yùn)行速度更快、效率更高,而且更易于理解。

到此這篇關(guān)于C語言指針數(shù)組案例詳解的文章就介紹到這了,更多相關(guān)C語言指針數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot2.0新特性之配置綁定全解析

    SpringBoot2.0新特性之配置綁定全解析

    在Spring Boot 2.0中推出了Relaxed Binding 2.0,對原有的屬性綁定功能做了非常多的改進(jìn)以幫助我們更容易的在Spring應(yīng)用中加載和讀取配置信息,感興趣的小伙伴們可以參考一下
    2019-03-03
  • 基于Spring-cloud-gateway實(shí)現(xiàn)全局日志記錄的方法

    基于Spring-cloud-gateway實(shí)現(xiàn)全局日志記錄的方法

    最近項(xiàng)目在線上運(yùn)行出現(xiàn)了一些難以復(fù)現(xiàn)的bug需要定位相應(yīng)api的日志,通過nginx提供的api請求日志難以實(shí)現(xiàn),于是在gateway通過全局過濾器記錄api請求日志,本文給大家介紹基于Spring-cloud-gateway實(shí)現(xiàn)全局日志記錄,感興趣的朋友一起看看吧
    2023-11-11
  • JAVALambda表達(dá)式與函數(shù)式接口詳解

    JAVALambda表達(dá)式與函數(shù)式接口詳解

    大家好,本篇文章主要講的是JAVALambda表達(dá)式與函數(shù)式接口詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Kotlin語言編程Regex正則表達(dá)式實(shí)例詳解

    Kotlin語言編程Regex正則表達(dá)式實(shí)例詳解

    這篇文章主要為大家介紹了Kotlin語言編程Regex正則表達(dá)式實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • JAVA SFTP文件上傳、下載及批量下載實(shí)例

    JAVA SFTP文件上傳、下載及批量下載實(shí)例

    本篇文章主要介紹了JAVA SFTP文件上傳、下載及批量下載實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • SpringBoot實(shí)現(xiàn)配置文件自動(dòng)加載和刷新的示例詳解

    SpringBoot實(shí)現(xiàn)配置文件自動(dòng)加載和刷新的示例詳解

    在使用Spring Boot開發(fā)應(yīng)用程序時(shí),配置文件是非常重要的組成部分,在不同的環(huán)境中,我們可能需要使用不同的配置文件,當(dāng)我們更改配置文件時(shí),我們希望應(yīng)用程序能夠自動(dòng)加載和刷新配置文件,本文我們將探討Spring Boot如何實(shí)現(xiàn)配置文件的自動(dòng)加載和刷新
    2023-08-08
  • IDEA創(chuàng)建SpringBoot的五種方式

    IDEA創(chuàng)建SpringBoot的五種方式

    在軟件開發(fā)的浩瀚海洋中,Spring?Boot以其獨(dú)特的魅力和強(qiáng)大的功能,為開發(fā)者開辟了一條通往高效、便捷開發(fā)之路,本文旨在給大家介紹IDEA創(chuàng)建SpringBoot的五種方式,并通過代碼和圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • Springboot集成Spring Security實(shí)現(xiàn)JWT認(rèn)證的步驟詳解

    Springboot集成Spring Security實(shí)現(xiàn)JWT認(rèn)證的步驟詳解

    這篇文章主要介紹了Springboot集成Spring Security實(shí)現(xiàn)JWT認(rèn)證的步驟詳解,幫助大家更好的理解和使用springboot,感興趣的朋友可以了解下
    2021-02-02
  • spring控制事務(wù)的三種方式小結(jié)

    spring控制事務(wù)的三種方式小結(jié)

    這篇文章主要介紹了spring控制事務(wù)的三種方式小結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • SpringBoot使用validation進(jìn)行自參數(shù)校驗(yàn)的方法

    SpringBoot使用validation進(jìn)行自參數(shù)校驗(yàn)的方法

    在SpringBoot項(xiàng)目中,利用validation依賴可以通過注解方式校驗(yàn)數(shù)據(jù)庫交互參數(shù),提高代碼可讀性和維護(hù)性,此方法避免了硬編碼校驗(yàn)規(guī)則,方便后期規(guī)則變更,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-09-09

最新評(píng)論