91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言的數組與指針是什么

發布時間:2021-08-26 18:16:27 來源:億速云 閱讀:152 作者:chen 欄目:開發技術

這篇文章主要介紹“C語言的數組與指針是什么”,在日常操作中,相信很多人在C語言的數組與指針是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C語言的數組與指針是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

目錄
  • 一、數組的定義

  • 二、數組空間的初始化

    • 1. char數組賦值

    • 2.char數組硬件開發規范

  • 二、數組與指針

一、數組的定義

char a[n];
注意:數組與指針非常相似
二者的區別:

數組為常量,約定禁止二次賦值,即數組不應該出現在=左側,如:a="HelloWorld";數組在聲明時,會申請一段連續的內存空間,指針不會數組元素為變量,標記可以修改指向任意內存(實際上會copy右側變量/常量到左側數組元素變量中,產生兩份內存,如a[2]="HelloWorld";),而指針指向常量后,再指向其他常量會產生段錯誤異常

二者相同點:

C語言數組沒有越界問題,甚至可以a[-3]寫法,數組和指針都可以訪問任意內存地址的內容
int main(int argc, char **argv)
{
    char a4 = 'A';
    char a[2] = {'B', 'C'};
    char a3 = 'D';
    //讀取結果:41 ASCII中 16位的41對應字母A
    printf("讀取結果:%X", a[2]);
    return 0;
}

二、數組空間的初始化

1. char數組賦值

char buf[10]={'A','B'}; 等價于 char buf[]={'A','B'};,前者數組長度為10,可在10范圍內增減,后者數組長度為聲明時數組當前的長度2,根據實際情況選擇,后續同原理
注意:上述賦值可以作為普通字符內存使用,不能當作字符串使用,如果當作字符串,需要如下賦值
char buf[3]={'A','B','\0'};

char buf[3]={"ab"};
注意:上述賦值可以作為字符串使用,但不能作為普通字符內存使用,默認會多出\0
char buf[3]="ab";
注意:上述操作意義為:將右側的常量從常量區copy一份到左側的變量區,該操作會產生兩個存儲"ab"內存
右側"ab"是常量不可修改,左側buf變量的"ab"是可以修改的

2.char數組硬件開發規范

char buf[10];表示存儲的字符/字符串(最后一位為\0)unsigned char buf[10];表示交互普通數據(最高位可以用于數據操作,粒度為bit)嵌入式開發中禁止使用strcpy();函數(必須找到\0才會結束,有漏洞),copy可以使用strncpy();,內存copy可以使用memcpy();

拷貝三要素

srcdest個數

注意:內存copy

int main()
{
    int buf[10];
    int srcBuf[100]={1,2,3,4,5};
    memcpy(buf,srcBuf,10*sizeof(int));
    //buf[0]:1
    printf("buf[0]:%d",buf[0]);
    unsigned char bufChar[10];
    unsigned char srcBufChar[100]={11,22,33,44};
    memcpy(bufChar,srcBufChar,10*sizeof(char));
    //bufChar:22
    printf("bufChar:%d",bufChar[1]);
    return 0;
}

二、數組與指針

注意:
1.指針的修飾符修飾的是指針一次讀取的數量
2.當指針指向多維數組時,只通過int就無法滿足要求,如int b[3][4],表示每行b[n]都存儲了sizeof(int)*4個字節,指針定義時也需要做對應的讀取數量調整,int (*p)[4]才能滿足,此處的()必須添加,讓編譯器優先讀取*p,再通過int修飾符和[]識別指針的容量為sizeof(int)*4個字節
3.多維數組概念一致

int main()
{
    int a[10];
    int b[3][4];
    int c[3][4][5];
    int *p1 = a;
    int(*p2)[4] = b;
    int(*p3)[4][5] = c;
    return 0;
}

到此,關于“C語言的數組與指針是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

中江县| 调兵山市| 竹溪县| 闻喜县| 尚志市| 黑龙江省| 伊宁县| 页游| 钟祥市| 陵川县| 五华县| 北海市| 墨江| 奉节县| 肃宁县| 铜梁县| 临西县| 抚远县| 新邵县| 新晃| 肥乡县| 闽清县| 祁门县| 溆浦县| 鹤壁市| 安阳县| 长汀县| 泌阳县| 东丰县| 博野县| 雷山县| 莱州市| 宁武县| 江门市| 石家庄市| 台东县| 马尔康县| 九江县| 天津市| 鲁山县| 临潭县|