最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

數(shù)組和指針的區(qū)別深入剖析

 更新時(shí)間:2012年11月16日 15:43:19   作者:  
在C/C++中,指針和數(shù)組在很多地方可以互換使用,這使得我們產(chǎn)生一種錯(cuò)覺,感覺數(shù)組和指針兩者是完全等價(jià)的,事實(shí)上數(shù)組和指針是有很大的區(qū)別的
在C/C++中,指針和數(shù)組在很多地方可以互換使用,這使得我們產(chǎn)生一種錯(cuò)覺,感覺數(shù)組和指針兩者是完全等價(jià)的,事實(shí)上數(shù)組和指針是有很大的區(qū)別的。
1.兩者在含義上的區(qū)別。
數(shù)組對(duì)應(yīng)著一塊內(nèi)存區(qū)域,而指針是指向一塊內(nèi)存區(qū)域。其地址和容量在生命期里不會(huì)改變,只有數(shù)組的內(nèi)容可以改變;而指針卻不同,它指向的內(nèi)存區(qū)域的大小可以隨時(shí)改變,而且當(dāng)指針指向常量字符串時(shí),它的內(nèi)容是不可以被修改的,否則在運(yùn)行時(shí)會(huì)報(bào)錯(cuò)。
如:
復(fù)制代碼 代碼如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
  char*s1="123456789";
  char*s2="123456";
  strncpy(s1,s2,6);
  printf("%s %s\n",s1,s2);
  return0;
}

在編譯時(shí)不會(huì)報(bào)錯(cuò),但是在運(yùn)行時(shí)會(huì)報(bào)錯(cuò),原因在于企圖改變s1的內(nèi)容,由于s1,s2指向的是常量字符串,其內(nèi)容是不可修改的,因此在運(yùn)行時(shí)不會(huì)通過。而下面這個(gè)程序是可以運(yùn)行通過的:
復(fù)制代碼 代碼如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
  char s1[10]="123456789";
   char s2[10]="123456";
   strncpy(s1,s2,6);
   printf("%s %s\n",s1,s2);
   return0;
}

在VC++ 6.0上可以編譯運(yùn)行通過,原因在于數(shù)組的內(nèi)容是可以被修改的,這就充分體現(xiàn)了指針和數(shù)組的區(qū)別,并不是完全等價(jià)的。
2.計(jì)算內(nèi)存容量的區(qū)別。
用運(yùn)算符sizeof可以計(jì)算出數(shù)組的容量(字節(jié)數(shù)),而用sizeof卻無法計(jì)算指針?biāo)竷?nèi)存的容量,用sizeof(p)得到的結(jié)果永遠(yuǎn)是4或者2(即指針變量所占內(nèi)存單元的字節(jié)數(shù),一般情況下指針變量占2個(gè)或4個(gè)字節(jié)的內(nèi)存單元)。在進(jìn)行參數(shù)傳遞時(shí),數(shù)組會(huì)自動(dòng)退化為同類型的指針。
看下面這段代碼和運(yùn)行結(jié)果:
復(fù)制代碼 代碼如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void function(int a[])
{
printf("%d\n",sizeof(a));
}
int main(void)
{
int a[10]={1,2,3,4,5,6,7};
int*p=a;
printf("%d %d\n",sizeof(a),sizeof(p));
function(a);
return0;
}

相關(guān)文章

  • 零基礎(chǔ)學(xué)習(xí)C/C++需要注意的地方

    零基礎(chǔ)學(xué)習(xí)C/C++需要注意的地方

    這篇文章主要介紹了零基礎(chǔ)學(xué)習(xí)C/C++需要注意的地方,文中講解非常細(xì)致,供大家參考和學(xué)習(xí),想要學(xué)習(xí)C/C++的可以閱讀此文
    2020-06-06
  • C語(yǔ)言操作符超詳細(xì)講解上篇

    C語(yǔ)言操作符超詳細(xì)講解上篇

    C?語(yǔ)言提供了豐富的操作符,有:算術(shù)操作符,移位操作符,位操作符,賦值操作符,單目操作符,關(guān)系操作符,邏輯操作符,條件操作符等。因?yàn)槠^大將分兩篇講解,讓我們通讀本篇來詳細(xì)了解吧
    2022-04-04
  • Qt實(shí)現(xiàn)UDP多線程數(shù)據(jù)處理及發(fā)送的簡(jiǎn)單實(shí)例

    Qt實(shí)現(xiàn)UDP多線程數(shù)據(jù)處理及發(fā)送的簡(jiǎn)單實(shí)例

    本文主要介紹了Qt實(shí)現(xiàn)UDP多線程數(shù)據(jù)處理及發(fā)送的簡(jiǎn)單實(shí)例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C調(diào)用C++代碼的方法步驟

    C調(diào)用C++代碼的方法步驟

    本文主要介紹了C調(diào)用C++代碼的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 解析VScode在Windows環(huán)境下c_cpp_properties.json文件配置問題(推薦)

    解析VScode在Windows環(huán)境下c_cpp_properties.json文件配置問題(推薦)

    這篇文章主要介紹了解析VScode在Windows環(huán)境下c_cpp_properties.json文件配置問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 使用Qt實(shí)現(xiàn)監(jiān)聽網(wǎng)頁(yè)是否響應(yīng)并導(dǎo)出Excel表

    使用Qt實(shí)現(xiàn)監(jiān)聽網(wǎng)頁(yè)是否響應(yīng)并導(dǎo)出Excel表

    Qt導(dǎo)出數(shù)據(jù)到excel,方法有很多,下面這篇文章主要給大家介紹了關(guān)于使用Qt實(shí)現(xiàn)監(jiān)聽網(wǎng)頁(yè)是否響應(yīng)并導(dǎo)出Excel表的相關(guān)資料,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • 如何利用C語(yǔ)言輸出3D立體感心形圖詳解

    如何利用C語(yǔ)言輸出3D立體感心形圖詳解

    其實(shí)我們?cè)诔绦蛑幸灿泻芏鄻啡さ?只是很多人不善于發(fā)現(xiàn),這篇文章主要給大家介紹了關(guān)于C語(yǔ)言輸出3D立體感心形圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • 解決C++全局變量只能初始化不能賦值的問題

    解決C++全局變量只能初始化不能賦值的問題

    今天小編就為大家分享一篇解決C++全局變量只能初始化不能賦值的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Visual Studio安裝的圖文教程

    Visual Studio安裝的圖文教程

    這篇文章主要介紹了Visual Studio安裝的圖文教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • C語(yǔ)言實(shí)現(xiàn)2048游戲代碼

    C語(yǔ)言實(shí)現(xiàn)2048游戲代碼

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)2048游戲代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評(píng)論

沙河市| 镶黄旗| 望城县| 绥芬河市| 昭平县| 天柱县| 聂荣县| 金昌市| 青河县| 平凉市| 麻栗坡县| 温泉县| 克什克腾旗| 广宁县| 顺义区| 舞阳县| 沾益县| 交城县| 潜山县| 延长县| 剑川县| 靖远县| 静乐县| 名山县| 安泽县| 泸水县| 托克托县| 双牌县| 依兰县| 鄄城县| 岑巩县| 县级市| 红河县| 泾阳县| 调兵山市| 民勤县| 扬州市| 镇沅| 滕州市| 建平县| 邹平县|