一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C語言*與&在操作線性表的作用詳解

C語言*與&在操作線性表的作用詳解

2022-02-16 15:47碼上就好12884 C/C++

本文主要介紹了C語言*與&在操作線性表的作用詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*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前面有個(*)號,究竟是為什么呢?

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#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.

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#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呢?

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

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

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

 到此這篇關于C語言*與&在操作線性表的作用詳解的文章就介紹到這了,更多相關C語言線性表* &內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_53912595/article/details/120942749

延伸 · 閱讀

精彩推薦
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
主站蜘蛛池模板: 校园刺激全黄H全肉细节文 校草让我脱了内裤给全班看 | 精品性影院一区二区三区内射 | 欧洲第一区第二区第三区 | 九九精品免视看国产成人 | 国产99热99| 亚洲精品日韩专区在线观看 | segui久久综合精品 | 国产一卡二卡3卡4卡更新 | 国产做a爰片久久毛片 | 国产成人 免费观看 | 亚洲 小说 欧美 激情 另类 | 国产伦精品一区二区三区免 | 色婷婷综合久久久中文字幕 | 日本在线精品视频 | 男男视频18免费网站 | 猫咪社区在线播放 | 免费一级毛片在线播放 | 动漫精品午夜在线播放 | 日韩国产欧美一区二区三区 | 天天综合色天天综合色sb | 国产午夜精品一区二区三区 | zozo日本另类极品 | 精品一区二区三区在线播放 | 搡60一70岁的老女人小说 | 亚洲人成伊人成综合网久久 | 经典千人斩一区二区视频 | 日本午夜大片免费观看视频 | 日本高清全集免费观看 | 精品国产免费久久久久久婷婷 | 四虎地址8848aa4hc44四虎 四虎成人永久地址 | 国产成人激烈叫床视频 | 99热影院 | 久久精品视在线观看2 | 日本韩国推理片免费观看网站 | 欧美国产日韩在线播放 | 日本javhd| 明星h文集合短篇小说 | 91久久国产综合精品 | 日本熟hdx | 国产丰满美女做爰 | 天天快乐高清在线观看 |