欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言 從根本上理解指針

 更新時間:2022年04月19日 10:29:53   作者:清風自在 流水潺潺  
C語言這門課程在計算機的基礎教學中一直占有比較重要的地位,然而要想突破C語言的學習,對指針的掌握是非常重要的,本文將具體針對指針的基礎做詳盡的介紹

一、* 的意義

  • 在指針聲明時,* 號表示所聲明的變量為指針
  • 在指針使用時,* 號表示取指針所指向的內(nèi)存空間中的值

如下:

int i = 0;
int j = 0;
int* p = &i; //指針聲明
j = *p; //取值

變量 p 保存著變量 i 的內(nèi)存地址,即:p <--> &i *p <--> i

* 號類似一把鑰匙,通過這把鑰匙可以打開內(nèi)存,讀取內(nèi)存中的值。

下面看一個指針的使用示例:

#include <stdio.h>
int main()
{
    int i = 0;
    int* pI;
    char* pC;
    float* pF;
    
    pI = &i;
    
    *pI = 10;
    
    printf("%p, %p, %d\n", pI, &i, i);
    printf("%d, %d, %p\n", sizeof(int*), sizeof(pI), &pI);
    printf("%d, %d, %p\n", sizeof(char*), sizeof(pC), &pC);
    printf("%d, %d, %p\n", sizeof(float*), sizeof(pF), &pF);
    
    return 0;
}

輸出結果如下:

所有 32 位系統(tǒng)上的指針變量占用內(nèi)存大小都為 4 個字節(jié)。

二、傳值調(diào)用與傳址調(diào)用

  • 指針是變量,因此可以聲明指針參數(shù)
  • 當一個函數(shù)體內(nèi)部需要改變實參的值,則需要使用指針參數(shù)
  • 函數(shù)調(diào)用時實參值將復制到形參
  • 指針適用于復雜數(shù)據(jù)類型作為參數(shù)的函數(shù)中

下面看一個利用指針交換變量的代碼:

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

輸出結果如下:

三、常量與指針

const int* p;    //p 可變,p 指向的內(nèi)容不可變
int const* p;    //p 可變,p 指向的內(nèi)容不可變
int* const p;    //p 不可變,p 指向的內(nèi)容可變
const int* const p;    //p 和 p 指向的內(nèi)容都不可變

口訣:左數(shù)右指

當 const 出現(xiàn)在 * 號左邊時指針指向的數(shù)據(jù)為常量,當 const 出現(xiàn)在 * 后右邊時指針本身為常量

下面通過一個例子加深理解:

#include <stdio.h>
 
int main()
{
    int i = 0;
    
    const int* p1 = &i;
    int const* p2 = &i;
    int* const p3 = &i;
    const int* const p4 = &i;
    
    *p1 = 1;    // compile error
    p1 = NULL;  // ok
    
    *p2 = 2;    // compile error
    p2 = NULL;  // ok
    
    *p3 = 3;    // ok
    p3 = NULL;  // compile error
    
    *p4 = 4;    // compile error
    p4 = NULL;  // compile error
    
    return 0;
}

輸出結果如下:

四、小結

  • 指針是 C 語言中一種特別的變量
  • 指針所保存的值是內(nèi)存的地址
  • 可以通過指針修改內(nèi)存中的任意地址內(nèi)容

到此這篇關于C語言 從根本上理解指針的文章就介紹到這了,更多相關C語言 指針內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • c++將引用或者是指針作為函數(shù)參數(shù)實現(xiàn)實參的運算

    c++將引用或者是指針作為函數(shù)參數(shù)實現(xiàn)實參的運算

    這篇文章主要介紹了c++將引用或者是指針作為函數(shù)參數(shù)實現(xiàn)實參的運算,需要的朋友可以參考下
    2014-05-05
  • C++ 關于 CMFCPropertyGridCtrl 的使用方法

    C++ 關于 CMFCPropertyGridCtrl 的使用方法

    這篇文章主要介紹了C++ 關于 CMFCPropertyGridCtrl 的使用方法的相關資料,需要的朋友可以參考下
    2015-06-06
  • C++通過共享內(nèi)存ShellCode實現(xiàn)跨進程傳輸

    C++通過共享內(nèi)存ShellCode實現(xiàn)跨進程傳輸

    在計算機安全領域,ShellCode是一段用于利用系統(tǒng)漏洞或執(zhí)行特定任務的機器碼,本文主要為大家介紹了C++如何通過共享內(nèi)存ShellCode實現(xiàn)跨進程傳輸,需要的可以參考下
    2023-12-12
  • C++中的static和const的關鍵字用法詳解

    C++中的static和const的關鍵字用法詳解

    這篇文章主要介紹了C++中的static和const的關鍵字用法詳解,這是一道經(jīng)常在面試中被問到的知識,本文給大家詳細介紹下,需要的朋友可以參考下
    2023-06-06
  • C/C++指針小結

    C/C++指針小結

    要搞清一個指針需要搞清指針的四方面的內(nèi)容:指針的類型,指針所指向的類型,指針的值或者叫指針所指向的內(nèi)存區(qū),還有指針本身所占據(jù)的內(nèi)存區(qū)
    2013-09-09
  • C++實現(xiàn)圖書管理系統(tǒng)

    C++實現(xiàn)圖書管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)圖書管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 用C語言實現(xiàn)圣誕樹(簡易版+進階版)

    用C語言實現(xiàn)圣誕樹(簡易版+進階版)

    大家好,本篇文章主要講的是用C語言實現(xiàn)圣誕樹(簡易版+進階版),感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C++學習之如何進行內(nèi)存資源管理

    C++學習之如何進行內(nèi)存資源管理

    與java、golang等自帶垃圾回收機制的語言不同,C++并不會自動回收內(nèi)存,這往往會導致內(nèi)存泄漏和內(nèi)存溢出等問題,所以掌握C++中的內(nèi)存管理技巧和工具是非常重要的,本文就來和大家詳細講講
    2023-05-05
  • 基于Opencv實現(xiàn)雙目攝像頭拍照程序

    基于Opencv實現(xiàn)雙目攝像頭拍照程序

    這篇文章主要為大家詳細介紹了基于Opencv實現(xiàn)雙目攝像頭拍照程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • C++構造函數(shù)深度學習

    C++構造函數(shù)深度學習

    這篇文章主要為大家詳細介紹了C++構造函數(shù),深度學習C++構造函數(shù),感興趣的小伙伴們可以參考一下
    2016-08-08

最新評論