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

C語言變量類型的深入分析

 更新時間:2017年07月06日 11:27:47   投稿:lqh  
這篇文章主要介紹了C語言變量類型的深入分析的相關(guān)資料,需要的朋友可以參考下

C語言是強類型語言,定義變量時必須聲明變量的類型,賦值的時候也只能是同種類型變量賦值。

一。變量的類型告訴編譯器怎么處理這個變量的數(shù)據(jù)。

         雖然c語言是強類型語言,但是不同類型的變量通過類型轉(zhuǎn)換也可以賦值,甚至指針變量可以轉(zhuǎn)化為int類型,轉(zhuǎn)化為char類型。從本質(zhì)上來說,變量類型只是告訴編譯器應(yīng)該怎么處理這個變量,所以不同變量可以通過顯示類型轉(zhuǎn)換來賦值。理解這點對我們理解指針的轉(zhuǎn)型非常重要。例如

int a = 10; 
int **ptr = &a; 
int b = (int)(*ptr); // *ptr是一個指針,但是通過轉(zhuǎn)型為int,我們可以將其賦值給b。 

如果不明白變量類型的本質(zhì),那么會以為第三行代碼是錯誤的。為什么可以這樣賦值呢?(*ptr)是一個指針,可是指針也有值,它的值是一個地址,地址其實就是無符號整數(shù)。所以我們通過類型轉(zhuǎn)換變成int,這個變量在內(nèi)存中的數(shù)據(jù)沒有變化,只是對它的解析變化了。如果是作為指針類型,那么數(shù)據(jù)是作為指針來解析;如果作為int型,那么數(shù)據(jù)是作為int來解析。事實上,我們還可以將其賦值給char類型。將其轉(zhuǎn)型為char,那么對它的解析就是char類型了,只取數(shù)據(jù)的一個字節(jié)解析成char類型,賦值給ch。

char ch = (char)(*ptr); // 有些編譯器會報錯,將其改成(char)(int)(*ptr)就可以修正錯誤了。

二。變量的類型告訴編譯器要分配多少內(nèi)存空間。

        在定義一個變量時,變量類型告訴編譯器要分配多少內(nèi)存空間來存儲變量。

char ch; // 1B 
int  i;  // 4B 
long l;  // 4B 
float f; // 4B 
double; // 8B 

順便說說,如何理解多級指針。例如int **ptr;

當我們遇到二級指針,三級指針時,總是弄不明白各級指針是什么意思。有一種方法比較容易多級指針,將指針作為數(shù)組來理解。一級指針是一維數(shù)組,二級指針是二維數(shù)組,三級指針是三維數(shù)組,依此類推。當然有些時候不能這么理解,那就要具體問題具體分析了。

int *ptr1;   // 一維數(shù)組 
int **ptr2; // 二維數(shù)組 
int ***ptr3; // 三維數(shù)組 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • QT升級6.0以上版本遇到問題以及解決方法

    QT升級6.0以上版本遇到問題以及解決方法

    更新新的QT后以前的舊版本建立的工程,自然會出現(xiàn)兼容性的問題,本文主要介紹了QT升級6.0以上版本遇到問題以及解決方法,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • C++ decltype類型說明符

    C++ decltype類型說明符

    在C++中,decltype作為操作符,用于查詢表達式的數(shù)據(jù)類型。decltype在C++11標準制定時引入,主要是為泛型編程而設(shè)計,以解決泛型編程中,由于有些類型由模板參數(shù)決定,而難以(甚至不可能)表示之的問題。
    2016-03-03
  • C++快速排序及優(yōu)化方案詳解

    C++快速排序及優(yōu)化方案詳解

    這篇文章主要介紹了C++快速排序及優(yōu)化方案詳解,快速排序是一種常用的排序算法,它通過選擇一個基準元素,將數(shù)組分成兩個子數(shù)組,其中一個子數(shù)組的所有元素都小于基準元素,另一個子數(shù)組的所有元素都大于基準元素,需要的朋友可以參考下
    2023-10-10
  • 深入理解C++中的vector類的用法及特性

    深入理解C++中的vector類的用法及特性

    vector直接翻譯過來為向量,在C++中為封裝動態(tài)數(shù)組的容器,且有序,需要的朋友可以參考下
    2016-05-05
  • C++ Boost System超詳細講解

    C++ Boost System超詳細講解

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-11-11
  • C語言實現(xiàn)Floyd算法

    C語言實現(xiàn)Floyd算法

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)Floyd算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C C++算法題解LeetCode1408數(shù)組中的字符串匹配

    C C++算法題解LeetCode1408數(shù)組中的字符串匹配

    這篇文章主要為大家介紹了C C++算法題解LeetCode1408數(shù)組中的字符串匹配示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • C語言編寫漢諾塔游戲

    C語言編寫漢諾塔游戲

    這篇文章主要介紹了C語言編寫漢諾塔游戲,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-11-11
  • C++計算每個字符出現(xiàn)的次數(shù)

    C++計算每個字符出現(xiàn)的次數(shù)

    這篇文章主要介紹了C++計算每個字符出現(xiàn)的次數(shù)的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • C語言項目爬樓梯的兩種實現(xiàn)方法參考

    C語言項目爬樓梯的兩種實現(xiàn)方法參考

    今天小編就為大家分享一篇關(guān)于C語言項目爬樓梯的兩種實現(xiàn)方法參考,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02

最新評論