国产探花免费观看_亚洲丰满少妇自慰呻吟_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

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

主站蜘蛛池模板: 松滋市| 迭部县| 东阿县| 绵阳市| 保定市| 封丘县| 金湖县| 宝鸡市| 麦盖提县| 南昌县| 普格县| 株洲县| 石城县| 鱼台县| 乌兰县| 仁怀市| 方山县| 峨眉山市| 城口县| 南宫市| 武冈市| 军事| 杨浦区| 万山特区| 万州区| 北京市| 永靖县| 宁晋县| 墨竹工卡县| 洞头县| 德化县| 长宁区| 乐都县| 新丰县| 灵璧县| 陇南市| 兴隆县| 桐庐县| 呼伦贝尔市| 嘉荫县| 南通市|