欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言的數(shù)組與指針可以這樣了解

 更新時間:2021年08月26日 16:12:55   作者:寶全哥哥  
這篇文章主要介紹了C語言的數(shù)組與指針,本文給大家介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下,希望能給你帶來幫助

前言

自學筆記,沒有歷史知識鋪墊(省略百度部分)C語言數(shù)組的概念及使用

一、數(shù)組的定義

char a[n];
注意:數(shù)組與指針非常相似
二者的區(qū)別:

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

二者相同點:

C語言數(shù)組沒有越界問題,甚至可以a[-3]寫法,數(shù)組和指針都可以訪問任意內(nèi)存地址的內(nèi)容
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;
}

二、數(shù)組空間的初始化

1. char數(shù)組賦值

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

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

2.char數(shù)組硬件開發(fā)規(guī)范

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

拷貝三要素

srcdest個數(shù)

注意:內(nèi)存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;
}

二、數(shù)組與指針

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

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語言數(shù)組的概念及使用

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!

相關文章

  • C語言程序環(huán)境編譯+鏈接理論

    C語言程序環(huán)境編譯+鏈接理論

    這篇文章主要介紹了C語言程序環(huán)境編譯+鏈接理論,下面文章基于C語言的相關資料展開對編譯和鏈接的詳細介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-04-04
  • C++?OpenGL實現(xiàn)旋轉(zhuǎn)立方體的繪制

    C++?OpenGL實現(xiàn)旋轉(zhuǎn)立方體的繪制

    這篇文章主要主要為大家詳細介紹了如何利用C++和OpenGL實現(xiàn)旋轉(zhuǎn)立方體的繪制,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起動手嘗試一下
    2022-07-07
  • C++11中模板隱式實例化與顯式實例化的定義詳解分析

    C++11中模板隱式實例化與顯式實例化的定義詳解分析

    實例化是為在程序中的函數(shù)模板本身并不會生成函數(shù)定義,它只是一個用于生成函數(shù)定義的方案。編譯器使用模板為特定類型生成函數(shù)定義時,得到的是模板實例。這即是函數(shù)模板的實例化。而函數(shù)模板實例化又分為兩種類型:隱式實例化和顯式實例化
    2022-04-04
  • C++?OpenCV紅綠燈檢測Demo實現(xiàn)詳解

    C++?OpenCV紅綠燈檢測Demo實現(xiàn)詳解

    OpenCV(Open Source Computer Vision Library)是開源的計算機視覺和機器學習庫,提供了C++、 C、 Python、 Java接口,并支持Windows、 Linux、 Android、 Mac OS平臺,下面這篇文章主要給大家介紹了關于C++?OpenCV紅綠燈檢測Demo實現(xiàn)的相關資料,需要的朋友可以參考下
    2022-11-11
  • C++11智能指針中的 unique_ptr實例詳解

    C++11智能指針中的 unique_ptr實例詳解

    unique是獨特的、唯一的意思,故名思議,unique_ptr可以“獨占”地擁有它所指向的對象,它提供一種嚴格意義上的所有權。這篇文章主要介紹了C++11智能指針中的 unique_ptr實例詳解,需要的朋友可以參考下
    2020-06-06
  • 基于C語言實現(xiàn)簡單掃雷游戲

    基于C語言實現(xiàn)簡單掃雷游戲

    這篇文章主要為大家詳細介紹了基于C語言實現(xiàn)簡單掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 學習二維動態(tài)數(shù)組指針做矩陣運算的方法

    學習二維動態(tài)數(shù)組指針做矩陣運算的方法

    這片文章介紹了如何利用二維動態(tài)數(shù)組指針做矩陣運算,需要的朋友可以參考下
    2015-07-07
  • 在Qt中使用QtWebApp搭建HTTP服務器的詳細步驟

    在Qt中使用QtWebApp搭建HTTP服務器的詳細步驟

    QtWebApp是一個開源項目,它基于著名的Qt?Framework開發(fā),提供了一種在C++環(huán)境中構建HTTP服務器的解決方案,這篇文章主要給大家介紹了關于在Qt中使用QtWebApp搭建HTTP服務器的詳細步驟,需要的朋友可以參考下
    2024-07-07
  • C++實現(xiàn)猴子吃桃的示例代碼

    C++實現(xiàn)猴子吃桃的示例代碼

    這篇文章主要介紹了C++實現(xiàn)猴子吃桃的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • c++如何實現(xiàn)Base64算法

    c++如何實現(xiàn)Base64算法

    這篇文章主要介紹了c++如何實現(xiàn)Base64算法,文中講解非常細致,幫助大家更好的理解和學習c++,感興趣的朋友可以了解下
    2020-08-08

最新評論