成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

【??C語(yǔ)言函數(shù)傳參の結(jié)構(gòu)體數(shù)組篇??】

20171112 / 1288人閱讀

背景介紹

C語(yǔ)言中函數(shù)參數(shù)傳遞的兩種方式(“引用傳遞做函數(shù)參數(shù)”是C++的特性,C語(yǔ)言不支持。
(1)傳值,就是把你的變量的值傳遞給函數(shù)的形式參數(shù),實(shí)際就是用變量的值來(lái)新生成一個(gè)形式參數(shù),因而在函數(shù)里對(duì)形參的改變不會(huì)影響到函數(shù)外的變量的值。
(2)傳址,就是傳變量的地址賦給函數(shù)里形式參數(shù)的指針,使指針指向真實(shí)的變量的地址,因?yàn)閷?duì)指針?biāo)傅刂返膬?nèi)容的改變能反映到函數(shù)外,也就是能改變函數(shù)外的變量的值。一般有變量地址作為參數(shù)、數(shù)組名作為參數(shù)、指針作為參數(shù)。

  1. 數(shù)組名作為參數(shù)時(shí),傳遞的是數(shù)組的首地址,實(shí)參數(shù)組和形參數(shù)組共用了一段內(nèi)存空間。所以當(dāng)用數(shù)組名做參數(shù)時(shí),實(shí)參和形參共享了一個(gè)數(shù)組,形參數(shù)組的改變也就是實(shí)參數(shù)組的改變。
  2. 指針作為參數(shù)和數(shù)組名作參數(shù)類(lèi)似,傳遞的也是結(jié)構(gòu)體數(shù)組的首地址,但是此時(shí)不是共享一個(gè)數(shù)組,而是共享一個(gè)變量的地址,也就是實(shí)參指針和形參指針共同指向同一個(gè)變量,共享同一個(gè)變量地址。

示例demo

下面的demo中:
test函數(shù)以結(jié)構(gòu)體數(shù)組名為形參;
test1函數(shù)以結(jié)構(gòu)體數(shù)組的首地址和數(shù)組大小作為形參;
test2函數(shù)是把結(jié)構(gòu)體數(shù)組的首地址傳入,然后以數(shù)組的形式遍歷;

#include #include #define MAXNUM (2)typedef struct tagNumber{    int i;    int j;    int k;}TNum;typedef struct tagNumbers{    TNum atNum[MAXNUM];}TNums;// 結(jié)構(gòu)體數(shù)組名void test (TNums atNums1[]){    printf("atNums1 ptr:%p/r/n",atNums1);        int idx = 0;     int idx1 = 0;        for(idx = 0; idx < MAXNUM; idx++)    {        for(idx1 = 0; idx1 < MAXNUM; idx1++)        {            printf("i:%d/n",atNums1[idx].atNum[idx1].i);            printf("j:%d/n",atNums1[idx].atNum[idx1].j);            printf("k:%d/n",atNums1[idx].atNum[idx1].k);        }    }}//結(jié)構(gòu)體指針1.0void test1(TNums *ptNum,int num){    printf("ptNum ptr:%p/r/n",ptNum);    int idx = 0;     int idx1 = 0;        for(idx = 0; idx < num; idx++)    {        for(idx1 = 0; idx1 < num; idx1++)        {            printf("i:%d/n",(ptNum + idx)->atNum[idx1].i);            printf("j:%d/n",(ptNum + idx)->atNum[idx1].j);            printf("k:%d/n",(ptNum + idx)->atNum[idx1].k);        }    }}//結(jié)構(gòu)體指針1.1void test2(TNums *ptNum){    printf("ptNum ptr:%p/r/n",ptNum);    int idx = 0;     int idx1 = 0;        for(idx = 0; idx < MAXNUM; idx++)    {        for(idx1 = 0; idx1 < MAXNUM; idx1++)        {            printf("i:%d/n",ptNum[idx].atNum[idx1].i);            printf("j:%d/n",ptNum[idx].atNum[idx1].j);            printf("k:%d/n",ptNum[idx].atNum[idx1].k);        }    }}int main() {    TNums atNums[MAXNUM];    memset(atNums, 0, sizeof(atNums));        int idx = 0;     int idx1 = 0;    for(idx = 0; idx < MAXNUM; idx++)    {        for(idx1 = 0; idx1 < MAXNUM; idx1++)        {            atNums[idx].atNum[idx1].i = 1+idx;            atNums[idx].atNum[idx1].j = 2+idx;            atNums[idx].atNum[idx1].k = 3+idx;        }    }        printf("atNums ptr:%p/r/n",atNums);        printf("func 1:/r/n");    test(atNums);        printf("func 2:/r/n");    test1(atNums, MAXNUM);            printf("func 3:/r/n");    test2(atNums);    return 0;}

打印信息:

atNums ptr:0x7fff87dba270func 1:atNums1 ptr:0x7fff87dba270i:1j:2k:3i:1j:2k:3i:2j:3k:4i:2j:3k:4func 2:ptNum ptr:0x7fff87dba270i:1j:2k:3i:1j:2k:3i:2j:3k:4i:2j:3k:4func 3:ptNum ptr:0x7fff87dba270i:1j:2k:3i:1j:2k:3i:2j:3k:4i:2j:3k:4

引經(jīng)據(jù)典

http://www.oh100.com/kaoshi/c/536660.html

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/118810.html

相關(guān)文章

  • C語(yǔ)言初階】?? 教你使用C語(yǔ)言中的各種操作符(熟練運(yùn)用+必須收藏)??

    本章目錄 溫馨提示本章重點(diǎn)正文開(kāi)始1. 操作符分類(lèi)2.算數(shù)操作符2.1 `/`操作符2.2 `%`操作符 3. 位移操作符3.1 ``左移操作符 4. 位操作符4.1 `&`按位與操作符4.2 `|`按位或操作符4.3 `^`按位異或操作符 5. 賦值操作符6. 單目操作符6.1 各種單目操作符6.2 sizeof 和 數(shù)組 7. 關(guān)系操作符(后面的操作符不單獨(dú)出現(xiàn)在目錄中)8. ...

    source 評(píng)論0 收藏0
  • ??C語(yǔ)言通訊錄管理系統(tǒng)(簡(jiǎn)易版)??

    ??C語(yǔ)言通訊錄管理系統(tǒng)(簡(jiǎn)易版)?? ?一、通訊錄?二、菜單實(shí)現(xiàn)和用戶(hù)交互?三、主函數(shù)????1.enum選項(xiàng)????2.switch判斷 ?四、定義聯(lián)系人和通訊錄????1.定義聯(lián)系人結(jié)構(gòu)體????2.定義通訊錄結(jié)構(gòu)體????3.定義結(jié)構(gòu)體變量 ?五、通訊錄初始化?六、新增聯(lián)系人?七、查找聯(lián)系人?八、刪除聯(lián)系人?九、修改聯(lián)系人?十、查看所有聯(lián)系人?十一、清空所有聯(lián)系人?十二、以名字排序所有...

    justCoding 評(píng)論0 收藏0
  • ??整理2萬(wàn)字帶你走進(jìn)C語(yǔ)言(詳細(xì)講解+代碼演示+圖解)??(強(qiáng)烈建議收藏!?。。?/b>

    目錄 一、什么是C語(yǔ)言? 二、第一個(gè)C語(yǔ)言程序 代碼 程序分析 ?程序運(yùn)行 一個(gè)工程中出現(xiàn)兩個(gè)及以上的main函數(shù) 代碼 運(yùn)行結(jié)果 分析 三、數(shù)據(jù)類(lèi)型 數(shù)據(jù)各種類(lèi)型 為什么會(huì)有這么多的數(shù)據(jù)類(lèi)型? 計(jì)算機(jī)單位 ?各個(gè)數(shù)據(jù)類(lèi)型的大小 ?注意事項(xiàng) 數(shù)據(jù)類(lèi)型的使用 四、變量和常量 變量的分類(lèi) 變量的使用 變量的作用域和生命周期 ?常量 五、字符串+轉(zhuǎn)義字符+注釋 字符串 ?轉(zhuǎn)義字符 注釋 六、選擇語(yǔ)句 ?...

    邱勇 評(píng)論0 收藏0
  • 怎么樣才能做到對(duì)多種數(shù)據(jù)類(lèi)型排序?C語(yǔ)言快速排序——qsort函數(shù)及其模擬實(shí)現(xiàn)

    摘要:我們以冒泡排序?yàn)槔?,模擬實(shí)現(xiàn)函數(shù)。交換每單位字節(jié)對(duì)于的二進(jìn)制序列這樣,冒泡排序就能排序多種數(shù)據(jù)類(lèi)型,模擬實(shí)現(xiàn)了函數(shù),當(dāng)然也可以使用其他的排序方法模擬實(shí)現(xiàn)函數(shù)。 ??...

    alphahans 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<