當前位置:首頁 » 密碼管理 » c結構體的訪問

c結構體的訪問

發布時間: 2022-05-24 10:59:41

⑴ 在c語言中怎樣實現對結構體的訪問具體點


struct A
{

};//A結構數據說明

A a;//A結構對象分配內存,並初始化;

假如 fun()函數要操作A結構怎麼辦?
status fun(A*& pa)
{
pa->數據 //操作A結構的數據
}
或者
status fun(A& pa)
{
pa.數據 //操作A結構的數據
}

⑵ C語言中struct 結構體 成員的訪問問題

這主要得看a是什麼類型,如果a是結構體變數(比如OS_MEM_DATA
a),那麼就是a.b。
如果是結構體指針變數(如OS_MEM_DATA
*a),那麼就是a->b。
a->b等價於(*a).b。

⑶ C語言結構體指針成員所指向的變數如何訪問

第一種寫法:

(*a).p=&b;

.的優先順序高於*,(*pointer)兩邊的括弧不能少。如果去掉括弧寫作*pointer.memberName,那麼就等效於*(pointer.memberName),這樣意義就完全不對了。

第二種寫法:

a->p=&b;

->是一個新的運算符,習慣稱它為「箭頭」,有了它,可以通過結構體指針直接取得結構體成員;這也是->在C語言中的唯一用途。

結構體是一種數據類型,是一種創建變數的模板,編譯器不會為它分配內存空間,就像 int、float、char 這些關鍵字本身不佔用內存一樣;結構體變數才包含實實在在的數據,才需要內存來存儲。下面的寫法是錯誤的,不可能去取一個結構體名的地址,也不能將它賦值給其他變數。

(3)c結構體的訪問擴展閱讀:

用指針引用結構體變數成員方式總結與技巧:

一、(*指針變數名).成員名

注意,*p 兩邊的括弧不可省略,因為成員運算符「.」的優先順序高於指針運算符「*」,所以如果 *p 兩邊的括弧省略的話,那麼 *p.num 就等價於 *(p.num) 了。

因為指針變數 p 指向的是結構體變數第一個成員的地址,即字元數組 name 的首地址,所以 p 和 (*p).name 是等價的。

「等價」僅僅是說它們表示的是同一個內存單元的地址,但它們的類型是不同的。指針變數 p 是 struct 型的,而 (*p).name 是 char* 型的。所以在 strcpy 中不能將 (*p).name 改成 p。用 %s 進行輸入或輸出時,輸入參數或輸出參數也只能寫成 (*p).name 而不能寫成 p。

二、直接用:指針變數名->成員名

來代替,它們是等價的。「->」是「指向結構體成員運算符」,它的優先順序同結構體成員運算符「.」一樣高。p->num 的含義是:指針變數 p 所指向的結構體變數中的 num 成員。p->num 最終代表的就是 num 這個成員中的內容。

⑷ C語言中struct 結構體 成員的訪問問題

這主要得看a是什麼類型,如果a是結構體變數(比如OS_MEM_DATA a),那麼就是a.b。
如果是結構體指針變數(如OS_MEM_DATA *a),那麼就是a->b。
a->b等價於(*a).b。

⑸ C語言 對結構體類型的變數的成員的訪問,無論成員是何種數據類型都可使用的運算符是()。

通常,訪問一個結構體的變數的成員使用的運算符是點;比如一個結構體變數為sudent,它有一個成員為name,要訪問結構體變數student中的成員name,直接可使用student.name來訪問;
補充:當我們定義了一個指向結構體變數的指針時,可用運算符->去訪問他的成員。

⑹ c++類中結構體的訪問

訪問結構體元素,根據結構體變數的類型,有兩種方法。
1
變數為結構體對象。
如果變數a為結構體對象,且結構體內有元素b,那麼可以使用a.b的方式訪問元素。
2
變數為結構體指針。
如果變數a為結構體指針,且結構體內有元素b,那麼可以使用a->b的方式訪問元素。
需要注意的是,結構體最初為c語言的概念,c++繼承了該類型並進行了擴展。在c++中,結構體與類(class)是相似的,元素同樣可以設置屬性,如果被設置為private屬性,那麼結構體成員函數和友元函數外的其它函數無法訪問該元素。

⑺ 關於C語言結構體訪問的問題。

放在.h頭文件中再#include是一個辦法

另一個辦法是使用extern關鍵字

首先要明白,編譯器是分別編譯源文件的,也就是分別編譯test.c和main.c

test.c中使用到main.c中定義的變數的話,在main.c中加上

externsomeTypevar;//比如externinta;

加上這行代碼編譯器才知道你確實在別的地方定義了這么一個東西,在連接階段linker會連接編譯階段分別生成的.obj文件,這時候就確實可以找到b這個變數了。


當然,對於你這個情況,用extern編譯器雖然知道了有b這么一個變數,但是還是不知道有

struct{
inta;
}

這么一個結構體類型,那編譯器當然不知道

b.a

表示的是什麼意思。還是報錯。所以還是用#include吧

熱點內容
微信56g緩存怎麼解決 發布:2024-05-04 14:09:41 瀏覽:705
sqlupdatewhereand 發布:2024-05-04 13:55:47 瀏覽:585
java視頻教程推薦 發布:2024-05-04 13:55:08 瀏覽:85
安卓官服閃耀暖暖怎麼換 發布:2024-05-04 13:46:37 瀏覽:170
我的世界精靈伺服器怎麼抓寵物 發布:2024-05-04 13:28:54 瀏覽:959
編譯androidwebkit 發布:2024-05-04 13:11:37 瀏覽:761
安卓微信流量怎麼控制 發布:2024-05-04 12:47:19 瀏覽:799
mysql主從復制資料庫 發布:2024-05-04 12:37:55 瀏覽:512
開公司人員配置不夠有什麼影響 發布:2024-05-04 12:32:21 瀏覽:435
rust網路編程和ftp 發布:2024-05-04 12:32:21 瀏覽:63