結(jié)構(gòu)體指針成員所指向變量,這個說法理解起來有點困難。
創(chuàng)新互聯(lián)公司公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務公司,擁有項目成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元雙城做網(wǎng)站,已為上家服務,為雙城各地企業(yè)和個人服務,聯(lián)系電話:13518219792
從字面意思上看斷句,有如下幾種可能:
首先定義一個包含所有可能情況的結(jié)構(gòu)體:
struct test
{
int a;
int *p;
};
struct test t1, *t2;1
結(jié)構(gòu)體/指針成員/所指向的變量。
結(jié)構(gòu)體中有指針成員,然后要訪問這個結(jié)構(gòu)體成員指向的變量值。
那么可以*(t1.p)這種方式對p取值。
2
結(jié)構(gòu)體指針/成員/所指向變量。
這種情況有兩種方法可以訪問:
*(t2-p)
或者
*(*(t2).p)
效果是一樣的。
3
描述有誤,實際為:
結(jié)構(gòu)體指針所指向/成員變量。
同樣有兩種方法可以使用:
t2-p
或者
(*t2).p
訪問結(jié)構(gòu)體元素,根據(jù)結(jié)構(gòu)體變量的類型,有兩種方法。
1 變量為結(jié)構(gòu)體對象。
如果變量a為結(jié)構(gòu)體對象,且結(jié)構(gòu)體內(nèi)有元素b,那么可以使用a.b的方式訪問元素。
2 變量為結(jié)構(gòu)體指針。
如果變量a為結(jié)構(gòu)體指針,且結(jié)構(gòu)體內(nèi)有元素b,那么可以使用a-b的方式訪問元素。
需要注意的是,結(jié)構(gòu)體最初為C語言的概念,C++繼承了該類型并進行了擴展。在C++中,結(jié)構(gòu)體與類(class)是相似的,元素同樣可以設(shè)置屬性,如果被設(shè)置為private屬性,那么結(jié)構(gòu)體成員函數(shù)和友元函數(shù)外的其它函數(shù)無法訪問該元素
指向結(jié)構(gòu)體成員運算符 : (-) 從外部看是包含了一個解指針(*)所以要對指針進行操作
例如:
typedef struct
{
int data[20];
int length;
}Sqlist;
Sqlist
*L;
L-lenth;
//同樣是得到L中l(wèi)ength的值
結(jié)構(gòu)體成員運算符 : ( . )直接調(diào)用結(jié)構(gòu)體中的某個成員
例如:
typedef struct
{
int data[20];
int length;
}Sqlist;
Sqlist?L;
L.length;?//直接調(diào)用L中l(wèi)ength的值
L.data[3];
擴展資料:
結(jié)構(gòu)體成員的點運算符(.)和箭頭運算符(-)的區(qū)別:
相同點:兩個都是二元操作符,其右操作符是成員的名稱。
不同點:點操作符左邊的操作數(shù)是一個“結(jié)果為結(jié)構(gòu)”的表達式;箭頭操作符左邊的操作數(shù)是一個指向結(jié)構(gòu)的指針。
如果一個函數(shù)的傳入?yún)?shù)是結(jié)構(gòu)體,且需要該結(jié)構(gòu)體作為返回值的時候,必須采用指針傳遞的方式,其中對結(jié)構(gòu)體賦值必須使用箭頭運算符。
參考資料:
百度百科--
菜鳥教程-C++?運算符
這主要得看a是什么類型,如果a是結(jié)構(gòu)體變量(比如OS_MEM_DATA
a),那么就是a.b。
如果是結(jié)構(gòu)體指針變量(如OS_MEM_DATA
*a),那么就是a-b。
a-b等價于(*a).b。
因為結(jié)構(gòu)是一個集合,由若干成員構(gòu)成,訪問其成員就用下面這個形式:
結(jié)構(gòu)變量名.成員名
舉例如下:
struct person //定義結(jié)構(gòu)類型
{
int weight,height;
float salary;
}
struct person zhangsan;//定義結(jié)構(gòu)變量名
以下是訪問結(jié)構(gòu)成員:
zhangsan.height=176;
zhangsan.salary=6588;