看的出來b和a[i].num應(yīng)該都是字符串,類似str[20]這樣的形式吧?
專注于為中小企業(yè)提供網(wǎng)站建設(shè)、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)平原免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
C語言里面,字符數(shù)組或者字符串的名稱代表該字符串所在的地址。兩個(gè)字符串如果用==來判斷實(shí)際上是比較的他們的地址是否相同;除非是自己和自己比較,否則,兩個(gè)字符串地址肯定不等啦。
要比較字符串內(nèi)容,比如char str1[] = "abc"和char str2[] = "abc"這兩個(gè)字符串是否相等只能用strcmp這個(gè)方法來比較的。
指向結(jié)構(gòu)體成員運(yùn)算符 : (-) 從外部看是包含了一個(gè)解指針(*)所以要對指針進(jìn)行操作
例如:
typedef struct
{
int data[20];
int length;
}Sqlist;
Sqlist
*L;
L-lenth;
//同樣是得到L中l(wèi)ength的值
結(jié)構(gòu)體成員運(yùn)算符 : ( . )直接調(diào)用結(jié)構(gòu)體中的某個(gè)成員
例如:
typedef struct
{
int data[20];
int length;
}Sqlist;
Sqlist?L;
L.length;?//直接調(diào)用L中l(wèi)ength的值
L.data[3];
擴(kuò)展資料:
結(jié)構(gòu)體成員的點(diǎn)運(yùn)算符(.)和箭頭運(yùn)算符(-)的區(qū)別:
相同點(diǎn):兩個(gè)都是二元操作符,其右操作符是成員的名稱。
不同點(diǎn):點(diǎn)操作符左邊的操作數(shù)是一個(gè)“結(jié)果為結(jié)構(gòu)”的表達(dá)式;箭頭操作符左邊的操作數(shù)是一個(gè)指向結(jié)構(gòu)的指針。
如果一個(gè)函數(shù)的傳入?yún)?shù)是結(jié)構(gòu)體,且需要該結(jié)構(gòu)體作為返回值的時(shí)候,必須采用指針傳遞的方式,其中對結(jié)構(gòu)體賦值必須使用箭頭運(yùn)算符。
參考資料:
百度百科--
菜鳥教程-C++?運(yùn)算符
首先你的linkman是struct person的數(shù)組
linkman本身就是個(gè)地址
可以直接傳遞到函數(shù)里的
如果你要用指針的話,就需要一個(gè)struct的二維指針,或者指針數(shù)組,如struct person **p;或者struct person (*p)[200];
還是建議你直接使用linkman傳遞地址。
另外,你要用linkman里面的name的話,如果是當(dāng)字符串來使用的話,直接linkman[1]-name就可以了