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

溫馨提示×

溫馨提示×

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

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

C語言*與&在操作線性表的作用是什么

發布時間:2021-10-26 13:36:03 來源:億速云 閱讀:134 作者:iii 欄目:開發技術

這篇文章主要講解了“C語言*與&在操作線性表的作用是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C語言*與&在操作線性表的作用是什么”吧!

在數據結構線性表一章,對線性表有這些操作方法(Operation):

/*Operation*/
 
Initlist(*L);/*初始化操作,建立一個空的線性表L*/
 
ListEmpty(L);/*判斷線性表是否為空表,若線性表為空,返回值為true,否則返回false*/ 
 
ClearList(*L);/*將線性表清空*/
 
GetElem(L,i,*e);/*性表L中的第i個位置元素值返回給e*/
 
LocateElem(L,e);/*在線性表L中查找與給定值e相等的元素,如果查找成功,返回該元素在表中序號;否則,返回0表示失敗*/
 
ListInsert(*L,i,e);/*在第i個位置插入元素e*/
  
ListDelete(*L,i,*e);/*刪除i個位置元素,并用e返回其值*/
  
ListLength(L);/*返回線性表L的元素個數*/

我們大致可以將上述函數分為兩類,一類參數列表中沒有*,例如:ListEmpty(L);

另一類在L或者e前面有個(*)號,究竟是為什么呢?

我們可以從下面這些代碼得到啟發

#include <stdio.h>
#include <stdlib.h>
void test1(int a,int b)
{
    int c=0;
    c=b;
    b=a;
    a=c;
    printf("%d\n",a);
    printf("%d\n",b);
 
}
int main()
{
   int a=1;
   int b=2;
   test1(a,b);
    printf("%d\n",a);
    printf("%d\n",b);
}

運行結果如下,可見test1中a,b作為形參互相交換值對main函數中的實參并沒有影響

2
1
1
2
 
Process returned 0 (0x0)   execution time : 0.118 s
Press any key to continue.

讓我們對上述代碼稍作改動來觀察結果

#include <stdio.h>
#include <stdlib.h>
void test1(int *a,int *b)
{
 
    int c=0;
    c=*b;
    *b=*a;
    *a=c;
        printf("%d\n",&a);
    printf("%d\n",&b);
 
}
int main()
{
   int a=1;
   int b=2;
   test1(&a,&b);
    printf("%d\n",a);
    printf("%d\n",b);
    return 0;
}

6422000
6422008
2
1
 
Process returned 0 (0x0)   execution time : 0.033 s
Press any key to continue.

很顯然,此次的test1()方法對main函數的實參總算有了影響,因為現在的test()方法是直接對地址為6422000與6422008存儲單元數據域的修改。

我們繼續回到對線性表操作上來,就會恍然大悟。例如:ListInsert(*L,i,e),倘若不加*,那么L就永遠作為一個局部變量留在了函數:ListInsert(L,i,e)中,沒法發生實際的改變。加了*才能保證L被帶出來。我們只需要在方法定義時給形參加上'*',在方法調用時給形參加上'&'就能獲得預期的效果

思考:另一種解決思路:是不是可以定義一種List Insert()方法,使得返回值為已經修改好的鏈表L呢?

List Insert(List L,int i,ElememtType e)
{
    /*
    此處為對鏈表進行插入操作
                            */
    return List;//要注意這個返回的List值已經被修改了
}

不過這也有個弊病,當插入發生在表頭時,L就必須要指向新的節點,否則地址仍指向的是原來 的表頭結點。解決方法也有,就是在鏈表第一個節點a前再插一個無意義的頭節點b,這樣每次想要在表頭插入元素時只需插在a,b之間即可。

注:C語言中*a指向a的數據域,&則是讀取a的地址。

感謝各位的閱讀,以上就是“C語言*與&在操作線性表的作用是什么”的內容了,經過本文的學習后,相信大家對C語言*與&在操作線性表的作用是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

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

AI

吉安县| 普安县| 武安市| 宁明县| 毕节市| 东至县| 林西县| 香格里拉县| 墨脱县| 天津市| 莱阳市| 山东省| 景宁| 丰台区| 镇巴县| 岢岚县| 东阿县| 仪征市| 万年县| 武邑县| 阳高县| 观塘区| 井研县| 遂川县| 罗定市| 汉寿县| 高青县| 汾西县| 县级市| 松原市| 烟台市| 杭州市| 右玉县| 杭锦后旗| 邯郸市| 皋兰县| 黄平县| 迭部县| 临漳县| 瓮安县| 保康县|