指針

關(guān)于指針,以前學(xué)習(xí)的時候就感覺很模糊,有種似懂非懂的感覺。現(xiàn)在又學(xué)了一遍,對于 其中的一些概念了解的比以前清楚了,但說到怎么去用還是不太了解,還是需要大量的去練習(xí)。
廢話也不多說了,還是把今天的學(xué)習(xí)內(nèi)容整理一下。以后有什么問題,也可以來查找。

首先得腦袋里裝著幾個問題來學(xué)習(xí)指針。
1、地址指針的概念

  • 變量的指針和指向變量的指針
  • 定義一個指針變量
  • 指針變量的引用
    2、指針變量做函數(shù)參數(shù)
    3、數(shù)組指針和指向數(shù)組的指針變量
  • 指向數(shù)組元素的指針
  • 通過指針引用數(shù)組元素
  • 指向多維數(shù)組的指針和指針變量

指針的概念

在計算機(jī)中所有的數(shù)據(jù)都是存放在存儲器中的,存儲器被劃分為一個一個的內(nèi)存單元,為了正確的找到這些信息,必須為每一個內(nèi)存單元進(jìn)行編號,內(nèi)存單元的編號就是地址。地址通常也稱為指針。

如何定義一個指針變量?

  • 對指針變量的定義包括三個內(nèi)容:
    1、指針類型的說明,定義變量為一個指針變量;
    2、指針變量名;
    3、變量值(指針)所指向的數(shù)據(jù)類型;

指針變量定義的一般形式為:

  • 類型說明符 變量名;
    例:
    int p2; /p2是指向整型變量的的指針變量
    /
    float *p3; //p3是指向浮點(diǎn)型變量的指針變量
    char *p4; //p4是指向字符型變量的指針變量

指針變量的使用:

  • 指針變量和普通變量一樣,使用之前必須要定義說明和賦值。未經(jīng)賦值的指針變量不能使用,否則會造成系統(tǒng)混亂,甚至是死機(jī)。

  • 指針變量的賦值只能是地址,決對不能賦其他任何數(shù)據(jù)。

  • 兩個相關(guān)的運(yùn)算符: &:取地址運(yùn)算符; *:指針運(yùn)算符(或間接訪址運(yùn)算符)。

  • C語言中提供了地址運(yùn)算符&,表示變量的地址;

  • 使用的一般形式為:
    &變量名;
    例:&a 表示變量a的地址,&b表示b的地址,變量本身必須事先說明。

指針變量的運(yùn)算

1、賦值運(yùn)算

  • 把一個變量的地址賦值給指向相同數(shù)據(jù)類型的指針變量
    int a ,*pa;
    pa=&a;//把整型變量a的地址復(fù)制給整型指針變量pa
  • 把一個指針變量的值賦給另一個指針變量(二者類型相同)
    int a,pa,pb;
    pa=&a;
    pb=pa; //把a(bǔ)的地址賦給pb,pa,pb類型相同可以相互賦值;
  • 把數(shù)組的首地址賦給指向數(shù)組的指針變量
    int a[5],*pa;
    pa=a;//注意:這里不需要取地址符,a表示數(shù)組的首地址
    //等價于 pa=&a[0];數(shù)組第一個元素的地址也是整個數(shù)組的首地址
  • 把字符串的首地址賦給指向字符類型的指針變量
    char *p;
    p="C program";//這里不是吧整個字符串裝入指針變量,而是把存放該字符串的字符數(shù)組的首地址裝入指針變量。
  • 把函數(shù)的入口地址賦給指向函數(shù)的指針變量
    int (*pf)();
    pf=f; //f為函數(shù)名

2、指針變量的加減法

指針的加減法主要的運(yùn)算對象是數(shù)組。
指針變量加上或減去一個整數(shù)n的意義是把指針指向的當(dāng)前位置(某數(shù)組元素)向前向后移動n個位置。

數(shù)組指針和指向數(shù)組的指針變量

一個變量有一個地址,一個數(shù)組包含若干個元素,每個數(shù)組元素都在內(nèi)存中占用存儲單元,他們都有相應(yīng)的地址。所謂數(shù)組的指針是指數(shù)組的起始地址,數(shù)組元素的地址是數(shù)組元素的地址。

指針數(shù)組的概念:

  • 一個數(shù)組的所有元素都是指針則是數(shù)組指針,指針數(shù)組是一組有序的指針的集合。
  • 指針數(shù)組的所有元素必須是具有相同存儲類型和指向相同數(shù)據(jù)類型的指針變量。
  • 指針數(shù)組的一般形式:
  • 類型說明符 * 數(shù)組名【數(shù)組長度】;
  • 其中類型說明符為指針指向的變量的類型:
    例如:int *pa[3];:pa是一個指針數(shù)組,他有三個數(shù)組元素,每個元素都是一個指針,指向整型變量。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型。 運(yùn)用指針編程是C語言最主要的風(fēng)格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,607評論 3 44
  • void* 類型指針:通用變體類型指針;可以不經(jīng)轉(zhuǎn)換,賦給其他指針,函數(shù)指針除外;malloc返回的就是void*...
    冰吉凌閱讀 3,515評論 0 18
  • 指針 指針是什么 為了了解指針的概念,我們先來看一個小故事。話說福爾摩斯派華生到威爾爵士居住的城堡去取回一個重要的...
    去留無意hmy閱讀 583評論 0 1
  • C語言指針的總結(jié) 1. 變量 不同類型的變量在內(nèi)存中占據(jù)不同的字節(jié)空間。 內(nèi)存中存儲數(shù)據(jù)的最小基本單位是字節(jié),每一...
    xx_cc閱讀 4,119評論 11 39
  • 1.語言中變量的實質(zhì) 要理解C指針,我認(rèn)為一定要理解C中“變量”的存儲實質(zhì), 所以我就從“變量”這個東西開始講起吧...
    金巴多閱讀 1,972評論 0 9

友情鏈接更多精彩內(nèi)容