奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

C語(yǔ)言

C語(yǔ)言中的指針是什么

時(shí)間:2024-08-08 07:39:11 C語(yǔ)言 我要投稿
  • 相關(guān)推薦

C語(yǔ)言中的指針是什么

  C語(yǔ)言中的指針是什么呢?讓百分網(wǎng)小編告訴你吧!閱讀下面的內(nèi)容你就可以知道答案哦~

  指針概念

  指針是一個(gè)變量,該變量的數(shù)值是地址,或者說(shuō),指針是一個(gè)數(shù)據(jù)對(duì)象。

  類(lèi)似于,int 類(lèi)型變量的數(shù)值是整數(shù)。

  與指針相關(guān)的運(yùn)算符

  間接運(yùn)算符:*

  ptr 指向 bath,ptr = &bath。

  獲取 bath 中存放的數(shù)值,val = * ptr。

  上面兩句語(yǔ)句等價(jià)于 val = bath。

  地址運(yùn)算符:&

  后跟一個(gè)變量名時(shí),& 給出該變量的地址。

  指針聲明

  int * pi;

  int 表明被指向的變量的類(lèi)型是整型,* 表示該變量是一個(gè)指針。pi 所指向的值(*pi)是 int 類(lèi)型,pi 的

  類(lèi)型是“指向 int 的指針”。

  * 和指針名之間的空格是可選的。

  指針的輸出格式是 %p。

  使用指針在函數(shù)間通信

  結(jié)合 PHP 中函數(shù)的引用賦值來(lái)理解。

  變量的值在函數(shù)中改變還是全局改變。

  指針和數(shù)組

  概念

  在 C 中,對(duì)一個(gè)指針加 1 的結(jié)果是對(duì)該指針增加 1 個(gè)存儲(chǔ)單元(storage unit)。對(duì)數(shù)組而言,地址會(huì)增加到下一個(gè)元素的地址,而

  不是下一個(gè)字節(jié)。歸納如下:

  指針的數(shù)值就是它所指向的對(duì)象的地址。對(duì)于包含多個(gè)字節(jié)的數(shù)據(jù)類(lèi)型,對(duì)象的地址通常是指其首字節(jié)的地址。

  在指針前運(yùn)用運(yùn)算符 * 可以得到該指針?biāo)赶虻膶?duì)象的數(shù)值。

  對(duì)指針加1,等價(jià)于對(duì)指針的值加上它所指向的對(duì)象的字節(jié)大小。

  函數(shù)、數(shù)組和指針

  聲明數(shù)組參量

  下面的四種原型都是等價(jià)的

  int sum(int *ar, int n);int sum(int *, int);int sum(int ar[], int n);int sum(int [], int);

  定義函數(shù)時(shí),下面兩種形式等價(jià)

  int sum(int * ar, int n){

  }int sum(int ar[], int n){

  }

  聲明形式參量時(shí),int *ar 和 int ar[] 都表示 ar 是指向 int 的指針。

  sizeof 求變量、指針、數(shù)組大小。

  使用指針參數(shù)

  使用數(shù)組形參的函數(shù)需要知道數(shù)組的起點(diǎn)和終點(diǎn)。告知終點(diǎn)有兩種方法,一種是直接使用整數(shù)參量指明數(shù)組元素的個(gè)數(shù),一種是用指針

  指明數(shù)組的結(jié)束地址。比如,

  int sum(int * start, int * end);

  若數(shù)組的元素個(gè)數(shù)是 SIZE,那么,* end 的值是 &start + SIZE(表示數(shù)組的最后一個(gè)元素后面的下一個(gè)元素)。

  一元運(yùn)算符 * 和 ++ 具有相等的優(yōu)先級(jí)別,但它在結(jié)合時(shí)是從右向左進(jìn)行的。

  指針操作

  指針基本操作

  賦值(assignment)。

  通常使用數(shù)組名或地址運(yùn)算符&進(jìn)行地址賦值。地址應(yīng)該和指針類(lèi)型兼容。

  求職(value-finding)或取值(dereferencing)。

  取指針地址。

  將一個(gè)整數(shù)加給指針。

  增加指針的值。

  從指針中減去一個(gè)整數(shù)。

  減小指針的值。

  求差值(Differencing)。指向同一個(gè)數(shù)組內(nèi)兩個(gè)元素的指針使用此運(yùn)算。

  比較。兩個(gè)指針具有相同的類(lèi)型。

  對(duì)未初始化的指針取值

  不能對(duì)未初始化的指針取值。例如

  int * pt; // 未初始化的指針*pt = 5;

  合法的代碼

  int i = 5;int * pt = &i;

  或者

  double * ptd;

  ptd = (double)malloc(30 * sizeof(double));

  指針和多維數(shù)組

  例程

  #include int main(void){ int zippo[4][2] = {{2, 4}, {6, 8}, {1, 3}, {5, 7}}; printf(" zippo = %p, zippo + 1 = %p\n",

  zippo, zippo + 1); printf("zippo[0] = %p, zippo[0] + 1 = %p\n",

  zippo[0], zippo[0] + 1); printf(" *zippo = %p, *zippo + 1 = %p\n",

  *zippo, *zippo + 1); printf("zippo[0][0] = %d\n", zippo[0][0]); printf(" *zippo[0] = %d\n", *zippo[0]); printf(" **zippo = %d\n", **zippo); printf(" zippo[2][1] = %d\n", zippo[2][1]); printf("*(*(zippo+2) + 1) = %d\n", *(*(zippo+2) + 1)); return 0;

  }

  代碼見(jiàn) E:\code\c\c_primer_plus_c\10_15_zippo1.c。

  這段代碼中的疑點(diǎn):*zippo[0]、**zippo。

  聲明指向二維數(shù)組的指針變量

  正確的代碼

  int (* pz)[2]; // 聲明一個(gè)指向二維數(shù)組pz[n][2]的指針

  錯(cuò)誤的代碼

  int * pax[2]; // 創(chuàng)建一個(gè)兩個(gè)指針的數(shù)組

  指針兼容

  int n = 5;double x;int * pi = &n;double * pd = &x;

  x = n; // 隱藏的類(lèi)型轉(zhuǎn)換pd = pi; // 編譯時(shí)錯(cuò)誤

  假如有如下聲明:

  int * pt;

  int (*pa)[3];

  int ar1[2][3];

  int ar2[3][2];

  int **p2; // 指向指針的指針

  那么,有如下結(jié)論:

  pt = &ar1[0][0]; // 都指向intpt = ar1[0]; // 都指向int pt = ar1; // 非法pa = ar1; // 都指向int[3]pa = ar2; // 非法p2 = &pt; // 都指向 int **p2 = ar2[0]; // 都指向int。不理解p2 = ar2; // 非法。不理解

  保護(hù)數(shù)組內(nèi)容

  對(duì)形參使用 const

  如果不打算在函數(shù)中修改數(shù)組,在函數(shù)原型和函數(shù)定義中對(duì)參數(shù)使用 const 可以達(dá)到目的。例程如下:

  int sum(const int ar[], int n);int sum(const int ar[], int n){ int i; int total = 0; for(i = 0; i < n; i++)

  total += ar[i]; return total;

  }

  使用了 const,在函數(shù)中試圖修改使用了 const 的參數(shù)時(shí),編譯時(shí)會(huì)發(fā)現(xiàn)此錯(cuò)誤。

  有關(guān) const 的其他內(nèi)容

  使用 const 創(chuàng)建符號(hào)常量。

  const double PI = 3.14159;

  指向常量的指針不能用于修改數(shù)值,但可以指向其他地址。

  double rates[5] = {88.99, 100.12, 59.45, 183.11, 340.5};const double * pd = rates; // pd指向數(shù)組開(kāi)始處* pd = 29.89; // 不允許pd[2] = 222.22; // 不允許 rates[0] = 99.99; // 允許,因?yàn)?rates 不是常量pd++; // 讓pd指向rates[1],允許

  將常量或非常量數(shù)據(jù)的地址賦給指向常量的指針是合法的。

  double rates[5] = {88.99, 100.2, 59.45, 183.11, 340.5};const double locked[4] = {0.08, 0.075, 0.0725, 0.07};const double * pc = rates; // 合法 pc = locked; // 合法 pc = &rates[3]; // 合法

  只有非常量數(shù)據(jù)的地址才可以賦給普通的指針。

  double rates[5] = {88.99, 100.2, 59.45, 183.11, 340.5};const double locked[4] = {0.08, 0.075, 0.0725, 0.07};double * pnc = rates; // 合法 pnc = locked; // 非法 pnc = &rates[3]; // 合法

  使用 const 保證指針不會(huì)指向別處。

  double rates[5] = {88.99, 100.2, 59.45, 183.11, 340.5};double * const pc = rates; // 指針指向數(shù)組的開(kāi)始處pc = &rates[2]; // 不允許 *pc = 92.99; // 可以

  使用 const 禁止修改所指向的數(shù)據(jù)。

  double rates[5] = {88.99, 100.2, 59.45, 183.11, 340.5};const double * const pc = rates; // 指針指向數(shù)組的開(kāi)始處pc = &rates[2]; // 不允許 *pc = 92.99; // 不允許

【C語(yǔ)言中的指針是什么】相關(guān)文章:

C語(yǔ)言中指針的概念03-16

C語(yǔ)言中的指針和內(nèi)存泄漏03-19

C語(yǔ)言中野指針的深入解析12-04

c語(yǔ)言中指針的使用方法03-20

C語(yǔ)言中各種類(lèi)型的指針的概念總結(jié)11-24

C語(yǔ)言的二級(jí)指針是什么03-19

如何理解C語(yǔ)言指針03-27

C語(yǔ)言指針知識(shí)點(diǎn)03-29

Swift與C語(yǔ)言指針結(jié)合使用實(shí)例03-29

主站蜘蛛池模板: 长子县| 巨鹿县| 济源市| 龙游县| 景宁| 图片| 宁国市| 钟祥市| 错那县| 长丰县| 安陆市| 镇远县| 萨嘎县| 台前县| 通海县| 临朐县| 吉安县| 千阳县| 化州市| 乐平市| 泰来县| 镇宁| 申扎县| 丹江口市| 万年县| 正镶白旗| 招远市| 监利县| 万载县| 钟祥市| 紫云| 含山县| 左贡县| 宜兴市| 绥江县| 木里| 吉木萨尔县| 乐山市| 抚远县| 博白县| 喀喇|