国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

char指針與char數組的區別(非常詳細?。?/h1>
2019-11-08 02:28:54
字體:
來源:轉載
供稿:網友
首先看指針:

char *p = “helloworld”;

    在這里p是一個變量,其類型為指針類型,并且指向一個字符串,字符串內容為”helloworld”,如果要訪問p[2]的話,就需要先從p中取出地址,該地址為”helloworld”的首地址,然后再加上偏移量2,就得到了’l’這個字符,所以其訪問的方式為先從p中取出地址,然后再將該地址加上偏移量,得到一個地址,最后從這個地址中取出值來。其分為三步:

1.取p的值,該值即為字符串的首地址;

2.該地址加上偏移量,得到所要取的字符的地址;

3.從這個地址中取得值。

此處p是一個變量,它自己是存放在一個地址中的,而它的內容則是”helloworld”這個字符串的地址. p與字符串是分開的。

    同時,該指針的值是動態確定的,必須在運行的時候才能確定其值,并通過該值訪問到字符串。

    而如果是數組的話,則為

char p[20] = “helloworld”;

    在這里p為一個字符串的標識,其類型是一個字符數組的類型,且該數組有20個char類型的大小.此時如果要訪問p[2]的話,分2步:

1.直接使用該字符數組的首地址加上2個char類型的大小的長度就得到了要訪問的字符的地址;

2.最后再從這個地址中取出值來.而且此時p的地址為該字符數組的首地址,其內容為’h’,一個字符類型。

    所以在這個地方數組與指針是不相同的,因為此時數組取值的第一步并不是從p中讀取地址來再加上偏移量的.此時的p這個地址的值就為’h’這個字符,其類型為字符型而不是一個指針類型.此時p的地址與p[0]的地址是相同的。

    同時,每個符號的地址在編譯時就確定了,所以這里p的地址就已經確定了,如果需要訪問p[2],則直接使用該地址加上2這個偏移量就可以取到這個值了.它不需要指令再取得這個首地址.而第一種情況下,還需要指令取得指針中的值,并通過這個值來訪問字符串。

    一個直觀的看法就是前一種是兩個不同的, 而后一種則是在同一個里面。

    另外,還有一個不同之處在于第一個情況下 p 指向的是一個常量區, 是不能改變的, 即不能夠對p[i]賦值, 而第二種情況下, p是一個字符數組, 其是可以改變的,可以對p[i]賦值的。

  他們倆*p的值是一樣的,都是h字符!


上一篇:HDU 2955

下一篇:Fail Fast Vs Fail Safe

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

主站蜘蛛池模板: 秦安县| 吐鲁番市| 三都| 会东县| 留坝县| 章丘市| 新源县| 庆元县| 长治县| 友谊县| 淳安县| 盘锦市| 台安县| 台山市| 宜阳县| 石景山区| 景谷| 七台河市| 台湾省| 伊宁市| 沂源县| 神农架林区| 静乐县| 海口市| 公主岭市| 军事| 筠连县| 义乌市| 株洲市| 大荔县| 普兰店市| 赤水市| 新乐市| 南通市| 鲁山县| 吉林省| 洛南县| 乐陵市| 修武县| 比如县| 四会市|