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

溫馨提示×

溫馨提示×

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

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

C語言知識點中的指針如何分析

發布時間:2022-01-07 19:17:06 來源:億速云 閱讀:130 作者:柒染 欄目:編程語言

C語言知識點中的指針如何分析,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。


指針是C的靈魂,沒有學會指針就相當于沒有學過C

指針的定義:指針就是內存單元的編號(編號>=0)

指針變量是存放內存單元編號的變量(存放地址的變量)

指針 & 指針變量是不同的
e.g:普通變量a的地址是1000H,可以稱a的指針是1000H 但是絕對不能說a的指針變量是1000H
指針是一個操作受限的非負整數:比如2個地址相乘是沒有意的 故不能做乘法操作,所以說指針是受限的

指針為什么重要?
(1).快速的傳遞數據,減少內存的使用
(2).可以使函數返回一個以上的值
(3).可以直接訪問物理硬件
(4).可以方便的處理字符串
(5).是理解面向對象語言中"引用"功能的基礎
(6).可以表示一些復雜的數據結構

指針的分類:
1.基本類型指針(重點):int *i//變量名:i int *表示i變量存放的是int類型變量的地址
e.g:

          int *i;
          int a = 10;

          i = a//error:i & a 雖然都是變量 但是i 是指針變量 a是普通變量 類型不同不能賦值

          i = &a;//True &是取地址符號 &a表示取變量a的地址;把a的地址賦值給指針變量i

          printf("*i = %d\n",*i)//輸出結果:*i = 3 i獲取到a的地址后*i 表示指向了a *i = a;

經典的例子加深對指針的理解:互換2個數字(之前使用的是普通變量,現在使用指針&函數)

#include <stdio.h>

void swap(int p,int q)
{
    int t;

    t = p;
    p = q;
    q = t;

    return;
}//swap 不能完成互換,只是互換了形參的值 主函數中的實參值并未互換 

void swap1(int *p,int *q)
{
    int *t;

    t = p;
    p = q;
    q = t;
}//swap1 不能完成 a b的值互換,只是互換指針變量 

void swap2(int *p,int *q)
{
    int t;

    t = *p;//*p =a ,*q=b
    *p = *q;
    *q = t;
}//swap2 互換成功 

int main(void)
{
    int a,b;
    a = 5;
    b = 9;

    swap(a,b);
    printf("a = %d,b = %d\n",a,b);
    swap1(&a,&b);
    printf("a = %d,b = %d\n",a,b);
    swap2(&a,&b);
    printf("a = %d,b = %d\n",a,b);
    return 0;
}
/*
 輸出結果: 
 a = 5,b = 9 
 a = 5,b = 9 
 a = 9,b = 5 

 總結:思考:printf 為什么不能放在被調函數中?
 題目的要求是:互換a b的值 而非被調函數的值互換

 測試結果:
 1.swap只是被調函數的形參值互換了 主函數中的實盤并沒有互換
 2.swap1 只是互換 a b地址的存儲位置 并沒有互換 a b地址中的值   
 **3.swap2 為什么會成功?原因很簡單哦 swap2的功能是把 a b地址中的值互換了
 簡單說:a b是被劃分出來的2個靜態地址 5,9是存放在地址中的值 swap2功能是把
 2個地址中的 5 9互換 一旦地址中的值達到互換即 a b的值完成了互換**
*/

C語言知識點中的指針如何分析

看完上述內容,你們掌握C語言知識點中的指針如何分析的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

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

AI

松阳县| 周宁县| 许昌县| 西盟| 兰州市| 宁乡县| 通化县| 武邑县| 曲周县| 嵩明县| 吉水县| 山东省| 黄大仙区| 曲麻莱县| 拉孜县| 虎林市| 红安县| 贡嘎县| 阿瓦提县| 高邮市| 神农架林区| 绥芬河市| 广元市| 辰溪县| 沙坪坝区| 沾益县| 察雅县| 陆河县| 青川县| 太康县| 黄冈市| 静安区| 保亭| 永和县| 大埔区| 大邑县| 宁化县| 西丰县| 丽江市| 淮北市| 类乌齐县|