精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

數組名之間可以直接賦值嗎

學益得智能硬件 ? 來源:學益得智能硬件 ? 2024-11-26 11:23 ? 次閱讀

數組之間的賦值能不能直接使用等于號?比如這樣的代碼。

int main()
{
    int a[5] = {1, 2, 3, 4, 5}; 
    int b[5] = {0};


    b = a;
    
return 0;
}

想把數組 a 里面的數據全部賦值給 b,寫成 b = a 行不行?

和這個問題類似的還有,數組名為什么不能進行 ++ 操作?

chararray[5]={0};
array++;

比如這樣的表達式,array++ 在編譯的時候就會提示錯誤:

root@Turbo:~# gcc test.c -o test
test.c: In function ‘main’:
test.c:18:11: error: assignment to expression with array type
   18 |         b = a;
      |           ^
test.c:22:14: error: lvalue required as increment operand
   22 |         array++;
      |              ^~
root@Turbo:~#

需要一個左值作為操作數,換句話說,數組名不能作為左值。

關于數組名,官方的解釋是:

/*
 * Except when it is the operand of the sizeof operator, or typeof 
 * operators, or the unary & operator,or is a string literal used 
 * to initialize an array, an expression that has type "array of 
 * type" is converted to an expression with type "pointer to type" 
 * that points to the initial element of the array object and is not
 * an lvalue. If the array object has register storage class, the be
 * havior is undefined.
 * */

除了跟 sizeof、typeof、& 這些運算符一起使用,數組類型通常被轉換成指針類型,指向數組的第一個元素,并且它不能作為左值,不能作為左值,也就是不能被修改。

其實也很好理解,數組被初始化后,已經分配了內存,數組名就表示這塊內存的地址,如果數組名被修改了,整個數組都要跟著移動,顯然不合適。

那 array + 1 這個表達式有沒有問題?

當然沒有問題,array++ 和 array + 1 是兩碼事。

array++ 會修改 array 的值,但是 array + 1 只是個表達式,并不會修改 array 的值,如果寫成 array = array + 1 才會出問題。

for (int i = 0; i < 5; i++)
{
????b[i]?=?a[i];
}


//或者?
memcpy(b,?a,?sizeof(int)?*?5);

最后就是關于數組的賦值,在C語言中沒有捷徑,只能通過循環逐個元素賦值,數組名不能直接賦值。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4750

    瀏覽量

    68357
  • 數組
    +關注

    關注

    1

    文章

    416

    瀏覽量

    25910

原文標題:數組名之間能否直接賦值

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-shell腳本編寫之數組

    Shell腳本也支持使用數組。1、數組定義方式如下Arr=(a0 a1 a2…an)Arr是數組名稱,成員使用()括起來,其中每個成員之間使用空格隔離。另一種定義方式如下所示,每個成員
    發表于 09-03 14:23

    飛凌嵌入式ElfBoard ELF 1板卡-shell腳本編寫之數組

    起來,其中每個成員之間使用空格隔離。另一種定義方式如下所示,每個成員單獨賦值:Arr[0]=a0Arr[1]=a1Arr[2]=a2…Arr[n]=an2、數組成員使用可以將每個成員當
    發表于 08-30 09:25

    為什么給io賦值時??吹?=和|=,而不是直接=呢?

    如題,為什么給io賦值時??吹?=和|=,而不是直接=呢?
    發表于 04-30 06:55

    鴻蒙TypeScript入門學習第11天【Array(數組)】

    數組對象是使用單獨的變量來存儲一系列的值。 數組非常常用。
    的頭像 發表于 04-09 14:38 ?1054次閱讀
    鴻蒙TypeScript入門學習第11天【Array(<b class='flag-5'>數組</b>)】

    為什么指針之間不要隨意賦值呢?

    指針之間也不能隨意賦值。
    的頭像 發表于 03-28 17:13 ?506次閱讀
    為什么指針<b class='flag-5'>之間</b>不要隨意<b class='flag-5'>賦值</b>呢?

    mapgis如何給區屬性賦值

    地進行數據分析和可視化。 在MapGIS中給區屬性賦值有多種方法,下面將詳細介紹其中的幾種常用方法。 1.手動賦值 手動賦值是最直接和簡單的方法。首先,在MapGIS中打開需要進行屬性
    的頭像 發表于 02-23 17:49 ?2081次閱讀

    proteus屬性賦值工具怎么用

    Proteus是一種電路設計和仿真軟件,在進行電路設計和仿真時,屬性賦值是非常重要的步驟。屬性賦值工具可以幫助用戶快速有效地配置電路元件的屬性,從而實現電路的準確仿真。下面是關于Proteus屬性
    的頭像 發表于 02-23 17:19 ?4148次閱讀

    verilog同步和異步的區別 verilog阻塞賦值和非阻塞賦值的區別

    Verilog中同步和異步的區別,以及阻塞賦值和非阻塞賦值的區別。 一、Verilog中同步和異步的區別 同步傳輸和異步傳輸是指數據在電路中傳輸的兩種方式,它們之間的區別在于數據傳輸的時間控制方式。 同步傳輸:同步傳輸是通過時鐘
    的頭像 發表于 02-22 15:33 ?1555次閱讀

    數組和鏈表在內存中的區別 數組和鏈表的優缺點

    內存中的存儲方式: 數組是一種連續存儲的數據結構,它將元素存儲在相鄰的內存位置中。這使得數組的訪問效率高,可以通過下標來直接訪問任何一個元素。 鏈表是一種離散存儲的數據結構,它將元素
    的頭像 發表于 02-21 11:30 ?922次閱讀

    G10指令可以對參數進行賦值,位型參數可以嗎?

    G10指令可以對參數進行賦值,位型參數可以嗎? G10指令是用于在加工程序中進行參數賦值的指令。它可以用于指定數值型參數或位型參數。 首先,
    的頭像 發表于 02-18 10:49 ?781次閱讀

    PHP中數組的使用方法!

    如何創建數組、添加/刪除元素、訪問數組元素、遍歷數組以及使用數組方法和函數等等。 首先,我們來看一下如何創建一個數組。 1. 創建
    的頭像 發表于 01-12 15:11 ?505次閱讀

    labview怎么查數組中相同元素的個數

    要查找LabVIEW中數組中相同元素的個數,可以使用以下步驟: 創建一個包含要查找的數值的數組。這可以通過手動輸入數組元素或從文件/其他數據
    的頭像 發表于 12-28 16:42 ?3241次閱讀

    數組與指針不能混用的情況

    和指針的基本概念。數組是一組相同類型的元素的集合,而指針是一個變量,它存儲了一個地址,該地址指向內存中的某個位置。在 C/C++ 中,數組名可以當作指向數組第一個元素的指針來使用。這
    的頭像 發表于 12-07 13:46 ?572次閱讀

    oracle sql 定義變量并賦值

    賦值可以通過使用PL/SQL語句塊或使用SQL*Plus工具來實現。下面將詳細介紹這兩種方法以及它們的具體用法。 使用PL/SQL語句塊定義和賦值變量: 在Oracle SQL中,PL/SQL是一種過程化語言,允許在代碼中定義和
    的頭像 發表于 12-06 10:46 ?2692次閱讀

    jsp判斷數組是否包含某個值

    元素,以及利用條件語句進行有效的值檢查。 1.陣列基礎知識: 數組是一種數據結構,允許在一個變量名下存儲同一類型的多個值。在JSP中,可以通過各種方式聲明和初始化數組,例如顯式指定大小或直接
    的頭像 發表于 11-30 16:18 ?966次閱讀