C講堂 C語言中“.”與“->”有什麼區別?
原文:https://blog.csdn.net/faihung/article/details/79190039
這雖然是個小問題,但有時候很容易讓人迷惑,因為有的時候用混淆了,程式編譯不通過。
下面說說我對它們的理解。
一般情況下用“.”,只需要宣告一個結構體。格式是,結構體型別名+結構體名。然後用結構體名加“.”加域名就可以引用域 了。因為自動分配了結構體的記憶體。如同 int a;一樣。
而用“->”,則要宣告一個結構體的指標,還要手動開闢一個該結構體的記憶體,然後把返回的指標給宣告的結構體指標,才能用“->”正確引用。否則記憶體中只分配了指標的記憶體,沒有分配結構體的記憶體,導致想要的結構體實際上是不存在。這時候用“->”引用自然出錯了,因為沒有結構體,自然沒有結構體的域了。
此外,(*a).b 等價於 a->b。
"."一般情況下讀作"的”。
“->”一般讀作"指向的結構體的"。
相關推薦
C講堂 C語言中“.”與“->”有什麼區別?
原文:https://blog.csdn.net/faihung/article/details/79190039 這雖然是個小問題,但有時候很容易讓人迷惑,因為有的時候用混淆了,程式編譯不通過。 下面說說我對它們的理解。 一般情況下用“.”,只需要宣告一個結構體。格式是,結構
Swift語言中與C/C++和Java不同的語法(五)
函數類型 fun java col str logs 默認參數 int函數 ... 這一節將會提到Swift中其他的關於函數的應用,這些內容包括有: 默認參數值和可變參數值、常量參數、返回函數類型和函數嵌套: 一、默認參數值和可變參數值 對默認參數值是指在函數的聲明中就已經
C語言中“.”與->的區別
寫過C語言的各位朋友剛開始的時候一定受過這倆個混淆的坑吧。 看著感覺這倆個差不多啊,都是可以指向一個結構體的元素。但是,往往我們寫的時候感覺錯誤百出: 下面我指出這倆個混淆的錯誤: 程式碼附上: 在上圖我們看到報錯6個地方都是對結構體內元素操作時候
C語言語法_C語言中(void)(&_a == &_b)或者更為抽象的(void)object的作用
非技術性文章,只是為了分享解決問題的方法 小白在複習C語言資料結構檢視Linux原始碼的時候,看到了Linux原始碼中MAX(a,b)的實現,它能夠比較2個任意型別的資料(可行的情況下)並獲得最大值,實現得非常通用。Linux是利用巨集,並且使用了GNU的
c語言中 “位元組” “位” 的區別
1位元組(byte) = 8 位元(bit) 注:這個位元組與位元的關係是規定的,記住就好,通用於任何場景,容易混淆的是字長和位元組,字長指的是cpu一次效能夠運算的資料的位數,不同的計算機可能不
C++中的const關鍵定代表什麼含義?跟C語言中的const有什麼區別
1. const常量,如const int max = 100; 優點:const常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查,而對後者只進行字元替換,沒有型別安全檢查,並且在字元替換時可能會產生意料不到的錯誤(邊際效應) 2. const 修飾類的資
function 與 => 的區別
fin 參數 其它 cal 利用 否則 毫秒 console 而是 在JS中,箭頭函數並不是簡單的function(){}匿名函數的簡寫語法糖,實際上,箭頭函數和匿名函數有個明顯的區別:箭頭函數內部的this是詞法作用域,在編寫函數時就已經確定了。而匿名函數的this指向運
C的結構定義:typedef struct與struct的區別
struct student{};struct student a;//定義結構student,再定義其變數a 而 “struct student{}a” 與上等同 而typedef struct student{}a;其中的a 只是結構體struct的一
<c:forEach>c:forEach>巢狀的用法與for的區別
上週在工作中遇到了頁面迭代的情況,初來乍到只知道簡單的迭代用法,但是我要處理的情況是一個List A 需要每18條資料去一個迭代成行 每六條資料在每行中迭代出三列 再把每條資料放在這三列中形成六個點。聽上去有些亂啊!確實挺頭疼的,呵呵 這樣可能看的就清晰些了。 先簡單說一
c#中Class和Struct使用與效能的區別
在Unity中很多已經定義為結構體的資料結構 Vector2, Vector3 和 Vector4 Rect Color和Color32 Bounds Touch 1.Class為引用型別,Struct為值型別 值型別與引用型別的區別這兩篇文章講得很好 雖然我
C++學習之陣列名a與&a的區別
在C++中定義一個數組: int a[5]={1,2,3,4,5}那麼a到底代表什麼含義呢?首先想到的是a代表的是陣列的首元素地址。那麼如果問你a的型別是什麼呢?估計很多人就不太確定了,看下面程式,讓編譯器告訴我們a是什麼型別的資料: main.cpp如下: 從圖片中的錯
C++ main函式裡的exit與return的區別
1 #include <iostream> 2 usingnamespace std; 3 class Temp 4 { 5 public: 6 Temp(){cout&
C語言中的struct和typedef struct<轉載>
對象 內部數據 編程 都是 內部 pre title HR 聲明 原文:http://www.nowamagic.net/librarys/veda/detail/1785 typedef為C語言的關鍵字,作用是為一種數據類型定義一個新名字。這裏的數據類型包括內部數據類
c語言中sscanf()與sprintf()的使用
strong include print int quest stdio.h 語言 控制臺 dbn #include<stdio.h> void main(void){ char * cgistr = "|Ip=192.168.1.78|Port=56
C語言中sizeof與strlen區別
由於 def sizeof 繼續 數組 color 例如 結束 自動添加 sizeof 初始的分配的空間大小,期中 sizeof(unsigned char) = 1; sizeof(signed char) = 1; sizeof(int) = 4; siz
C語言中%c與%s的區別與劃分
%c格式對應的是單個字元,%s格式對應的是字串。例:char a;char b[20];scanf("%c",&a); //只能輸入一個字元。scanf("%s",b); //可以輸入一串不超過20字元的字串。 %c對應型別為char, %s對應型別為char , 即字串. 用作
C語言中exit()與return的區別
1、exit函式和return函式的主要區別是: 1)exit用於在程式執行的過程中隨時結束程式,exit的引數是返回給OS的。main函式結束時也會隱式地呼叫exit函式。exit函式執行時首先會執行由atexit()函式登記的函式,然後會做一些自身的清理工作,同時重新整理所有輸出流、關閉所有開啟的流並且
C語言中static全域性變數與普通的全域性變數區別
下面是中興通訊2012校招筆試題的一道問答題: 1. static全域性變數與普通的全域性變數有什麼區別 ? 全域性變數(外部變數)的說明之前再冠以static 就構成了靜態的全域性變數。 全域性變數本身就是靜態儲存方式, 靜態全域性變數當然也是靜態儲存方式。 這兩者在儲存方式上
C語言中的printf與scanf函式
轉載李明傑老師的部落格:地址:http://www.cnblogs.com/mjios/archive/2013/03/14/2960199.html 本文目錄 說明:這個C語言專題,是學習iOS開發的前奏。也為了讓有面向物件語言開發經驗的程式設計師,能夠快速上手C語言。
c語言中char *name 與char name 的區別
要點:char* name="abc"指的是常量字串,不可以修改指標,是相容老的寫法;char[] name="abc"是指標,可以修改;在學習過程中發現了一個以前一直預設的錯誤,同樣char *c = "abc"和char c[]="abc",前者改變其內容程式是會崩潰的,