国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C語言——指針詳解(初階)

這篇具有很好參考價值的文章主要介紹了C語言——指針詳解(初階)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言:

在C語言學(xué)習(xí)過程中,指針?biāo)阋粋€難點。我總結(jié)所學(xué)的指針知識,寫一篇博客,希望大家對指針的知識理解的更通透。

一、指針是什么?

1.1 指針是什么?

每個內(nèi)存都有一個唯一的編號,這個編號也被稱為地址,C語言創(chuàng)建變量。都要在內(nèi)存上開辟空間。
編號= = 地址 = =指針

1.2 指針變量

我們可以通過&(取地址操作符)取出變量的內(nèi)存起始地址,把這個地址存放到另一個變量中。

1.3 總結(jié)

指針變量,用來存放地址的變量。(存放在指針中的值都被當(dāng)成地址處理)
編址:
對于32位機器,假設(shè)有32根地址線,那么每根地址線在尋址的時候產(chǎn)生高電平(高電壓)和低電平(低電壓)就是。(1或者0)
在32位機器上,地址是32個1或者0組成的二進制序列,指針變量的大小4個字節(jié)。(指針的大小在32位平臺上是4個字節(jié),64位平臺上是8個字節(jié))

二、指針和指針類型

指針有類型。
指針的定義:type * p
type:p指向?qū)ο蟮念愋?/font>
*:p解引用訪問的對象的大小是sizeof(type)
p是指針變量
例子:
char * 類型的指針是為了存放 char *類型變量的地址。
short * 類型的指針是為了存放 short *類型變量的地址。
int * 類型的指針是為了存放 int *類型變量的地址。

2.1指針±整數(shù)

指針的類型決定了指針向前或者向后走一步有多大。
整型指針+1跳過4個·字節(jié)
字符指針+1跳過1個字節(jié)
type*p -/+n個步長
跳過的是n * sizeof(type)個字節(jié)

2.2 指針的解引用

指針的類型決定了,對指針解引用的時候有多大權(quán)限(能操作幾個字節(jié))
如:char * 的指針解引用只能訪問一個字節(jié),而int * 的指針解引用能訪問4個字節(jié)。

三、野指針

野指針是指向未分配或者已經(jīng)釋放的內(nèi)存地址。

3.1野指針的成因

  1. 指針未初始化
#include <stdio.h>
int main()
{
    int* p;//局部變量指針未初始化,默認為隨機值,是野指針
    *p = 20;
    return 0;
}
  1. 指針越界訪問
#include <stdio.h>
int main()
{
    int arr[10] = { 0 };
    int* p = arr;
    int i = 0;
    for (i = 0; i < 11; i++)
    {
        *p++ = i;//當(dāng)指針指向的范圍超出數(shù)組的范圍時,p就是野指針(非法訪問了)。
    }
    return 0;
}

3) 指針指向的空間被釋放

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char* p = NULL;//p是空指針
    p = (char*)malloc(sizeof(char));//創(chuàng)建一個內(nèi)存地址,并且使p指向它
   free(p);//釋放了p的內(nèi)存地址
   char* p1 = p;//p1是野指針,因為p的內(nèi)存地址被釋放了
    return 0;
}

3.2如何避免野指針

  1. 指針初始化
    明確知道指針應(yīng)該初始化為誰的地址,就直接初始化為誰的地址;不知道指針初始化為誰的值,就暫時初始化為NULL。
  2. 小心指針越界
  3. 指針指向空間釋放,及時置NULL
  4. 避免返回局部變量的地址
  5. 指針使用之前檢測有效性

四、指針運算

指針±整數(shù)
指針-指針
指針的關(guān)系運算

4.1 指針±整數(shù)

float arr[10]={0};
float* p=&arr[0]
*p++=0;//把0賦值給p指向的那個值,結(jié)束后把p的指向的那個地址向后移4個字節(jié)

4.2指針-指針

int arr[10];
printf("%d ",&arr[9]-&arr[0]);//打印的是9

指針-指針得到的數(shù)值的絕對值是指針和指針之間的元素個數(shù);
指針-指針運算的前提條件是:指針和指針指向了同一塊空間。

4.3指針的關(guān)系運算

指針與指針之間的比較
標(biāo)志規(guī)定:
允許指向數(shù)組元素的指針與指向數(shù)組最后一個元素后面的那個內(nèi)存位置的指針比較,但是不允許與指向第一個元素之前的那個內(nèi)存位置的指針進行比較。

五、指針和數(shù)組

指針和數(shù)組之間的關(guān)系:
指針變量就是指針變量,不是數(shù)組,指針變量的大小是4/8個字節(jié),專門用來存放地址的。
數(shù)組就是數(shù)組,不是指針,數(shù)組是一塊連續(xù)的空間,可以存放一個或者多個類型相同的數(shù)據(jù)。
聯(lián)系:數(shù)組中,數(shù)組名其實是數(shù)組首元素的地址。
數(shù)組名 == 地址 == 指針
當(dāng)我們知道數(shù)組首元素地址的時候,因為數(shù)組是連續(xù)存放的,所以通過指

  • 針就可以遍歷訪問數(shù)組。
  • 數(shù)組是可以通過指針來訪問的。

數(shù)組名是首元素地址,但是有兩個例外:

  • sizeof(數(shù)組名)整個數(shù)組的長度 &數(shù)組名
  • 指向整個數(shù)組的指針,移動一次,移整個數(shù)組的字節(jié)。

所以p+i其實計算的是數(shù)組arr下標(biāo)為i的地址,那么我們可以通過指針來訪問數(shù)組。

#include <stdio.h>
int main()
{
    int arr[] = { 1,2,3,4,5,6,7,8,9 };
    int* p = arr;//指針存放數(shù)組首元素的地址
    int sz = sizeof(arr) / sizeof(arr[0]);
    int i;
    for (i = 0; i < sz; i++)
        printf("%d ", *(p + i));
    return 0;
}

六、二級指針

C語言——指針詳解(初階),C語言,c語言,開發(fā)語言
a的地址存放在pa中,pa的地址存放在p中;pa是一級指針,p是二級指針。
*p通過對p中的地址解引用,這樣就得到了pa, *p其實訪問的就是pa。
**p先通過 * p找到pa,然后對pa進行解引用操作:*pa,就是找到a。

七、指針數(shù)組

整型數(shù)組——存放整型的數(shù)組
字符數(shù)組——存放字符的數(shù)組
指針數(shù)組——存放指針的數(shù)組
指針數(shù)組是什么樣的?

int* arr[5]
arr是一個數(shù)組,存放5個元素,每個元素是一個整型指針

C語言——指針詳解(初階),C語言,c語言,開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-575427.html

到了這里,關(guān)于C語言——指針詳解(初階)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【C語言】指針初階

    【C語言】指針初階

    ?哈嘍,大家好,今天我們來學(xué)習(xí)C語言中的指針,今天主要學(xué)習(xí)初階指針,后期我們將繼續(xù)學(xué)習(xí)指針進階。 目錄 1. 指針是什么 2. 指針和指針類型 2.1 指針+-整數(shù) 2.2 指針的解引用 3. 野指針 3.1 野指針成因 3.2 如何規(guī)避野指針 4. 指針運算 4.1 指針+-整數(shù) 4.2 指針-指針 4.3 指針的關(guān)

    2024年02月09日
    瀏覽(19)
  • C語言——指針初階

    C語言——指針初階

    ?哈嘍,大家好,今天我們來學(xué)習(xí)C語言中的指針,今天主要學(xué)習(xí)初階指針,后期我們將繼續(xù)學(xué)習(xí)指針進階。 目錄 1. 指針是什么 2. 指針和指針類型 2.1 指針+-整數(shù) 2.2 指針的解引用 3. 野指針 3.1 野指針成因 3.2 如何規(guī)避野指針 4. 指針運算 4.1 指針+-整數(shù) 4.2 指針-指針 4.3 指針的關(guān)

    2024年02月05日
    瀏覽(23)
  • 初階C語言——指針

    初階C語言——指針

    Hello,我們又見面了,時間過的好快啊,轉(zhuǎn)眼間也已經(jīng)寫了這么多份博客了,在接下來的一年里,小編也會認真學(xué)習(xí)的敲代碼,我們一起進步,那今天開始講我們的指針,指針這一章節(jié)在C語言的學(xué)習(xí)中是比較難的一章節(jié),廢話不多說,開始我們的學(xué)習(xí)吧。 1. 指針是什么? 指

    2024年02月13日
    瀏覽(24)
  • C語言指針(初階)

    C語言指針(初階)

    嘻嘻,家人們,今天咱們剖析一下指針,好啦,廢話不多講,開干! 假設(shè)有一棟宿舍樓,把uu們放在樓里面,樓上有100個房間,但是房間沒有編號,此時如果uu們的朋友來找uu們玩的話,就得挨個房間去找,這樣子的話,效率很低,但是如果我們根據(jù)每個樓層與樓層的放假情況,給每個房間進行編號

    2024年02月20日
    瀏覽(26)
  • 初階C語言-指針

    初階C語言-指針

    ?? . ?? ???? ? ???? ????我們終會上岸,無論去到哪里都是陽光萬里,鮮花燦爛 ?? ??? ?? 今天我們一起學(xué)習(xí)一下指針的相關(guān)內(nèi)容吧! ??指針是什么呢? 1.指針是內(nèi)存中的一個最小單元的編號,也就是地址。 2.平時口語中說的指針就是指針變量,是用

    2024年02月12日
    瀏覽(15)
  • 【C語言】指針----初階

    【C語言】指針----初階

    ???博客主頁:江池俊的博客 ? 收錄專欄:C語言初階之路 ??如果覺得博主的文章還不錯的話,請點贊??收藏?? 三連支持一下博主?? 目錄 一、指針是什么? 1.1指針與內(nèi)存間的關(guān)系 內(nèi)存 1.2指針變量存放地址 二、指針和指針類型 2.1指針有哪些類型? 2.2指針類型的意義是

    2024年02月15日
    瀏覽(20)
  • 【C語言】初階指針

    【C語言】初階指針

    指針是一種用來存儲變量地址的變量類型。它可以指向任何數(shù)據(jù)類型,包括基本數(shù)據(jù)類型(如整數(shù)、字符等)和復(fù)合數(shù)據(jù)類型(如數(shù)組、結(jié)構(gòu)體等)。通過指針,我們可以間接地訪問或修改存儲在特定內(nèi)存地址上的數(shù)據(jù)。 指針是內(nèi)存中一個最小單元的編號,也就是地址。 平

    2024年02月12日
    瀏覽(21)
  • c語言初階指針

    c語言初階指針

    目錄 何為指針 地址大小 野指針 成因? ?如何規(guī)避 ?有效性 指針計算 +-整數(shù) ?編輯 ?指針比較運算 指針-指針 ?編輯?數(shù)組與指針關(guān)系 二級指針 指針數(shù)組 應(yīng)用? 指針就是 指針變量 ,用來存放內(nèi)存空間的一個編號,將指針比作我們賓館的客人,內(nèi)存空間就是一個個的房間,

    2024年02月09日
    瀏覽(24)
  • 【初階C語言】指針的妙用

    【初階C語言】指針的妙用

    前言:在C語言中,有一個非常重要的知識點,叫做指針,指針也是數(shù)據(jù)類型中的一種。在本節(jié)內(nèi)容中,我們就一起來學(xué)習(xí)指針。 ?學(xué)習(xí)一個新知識的時候,我們需要從這幾個方面: 指針是什么,指針是怎么訪問數(shù)據(jù)(指針是怎么工作的),也就是弄清楚指針類型的作用,怎

    2024年02月14日
    瀏覽(28)
  • 【C語言初階】指針篇—上

    【C語言初階】指針篇—上

    指針是什么? 指針理解的2個要點: 1. 指針是內(nèi)存中一個最小單元的編號,也就是地址 2. 平時口語中說的指針,通常指的是指針變量,是用來存放內(nèi)存地址的變量 總結(jié):指針就是地址,口語中說的指針通常指的是指針變量。 那我們就可以這樣理解上面的兩點: ① 內(nèi)存 補充

    2024年02月15日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包