第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

幫忙看一下這個(gè)關(guān)于C語言結(jié)構(gòu)體的一個(gè)疑問!

幫忙看一下這個(gè)關(guān)于C語言結(jié)構(gòu)體的一個(gè)疑問!

C C++
犯罪嫌疑人X 2021-11-03 20:11:45
#include<stdio.h>struct info{int k;char*s;}t;void f(struct info t){t.k=1997;t.s="Borland";}void main(){t.k=2000;t.s="Inprise";f(t);printf("%d,%s\n",t.k,t.s);}用VC6.0編譯后,結(jié)果是2000,Inprise請(qǐng)問這是為什么呢?難道那個(gè)函數(shù)調(diào)用一點(diǎn)用都沒有?Press any key to continue
查看完整描述

3 回答

?
慕標(biāo)琳琳

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊

你的函數(shù)調(diào)用是采用值傳遞的方式,也就是在f函數(shù)中另外生成一個(gè)結(jié)構(gòu)體,你改變的是這個(gè)新生成的結(jié)構(gòu)體的值,main中的結(jié)構(gòu)體t的值不變。
可改用地址傳遞的方式:
#include<stdio.h>
struct info
{
int k;
char*s;
}t;
void f(struct info *t)
{
t->k=1997;
t->s="Borland";
}
void main()
{
t.k=2000;
t.s="Inprise";
f(&t);
printf("%d,%s\n",t.k,t.s);
}



查看完整回答
反對(duì) 回復(fù) 2021-11-09
?
滄海一幻覺

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊

一個(gè)或多個(gè)其他數(shù)據(jù)類型組成。
那個(gè)sin_family,sin_port ,sin_addr都是結(jié)構(gòu)體sockaddr_in的一部分,既然整個(gè)結(jié)構(gòu)體都傳進(jìn)去了,那么他的每部分自然都被傳遞。函數(shù)的參數(shù)可以是任何數(shù)據(jù)類型,自然也能是結(jié)構(gòu)體
比如說你bind(sockfd, (struct sockaddr *)&server_sockaddr, sizeof(struct sockaddr))
那么在bind函數(shù)里用my_addr->sin_port就能得到他的端口,my_addr->sin_addr就能得到他的地址。

查看完整回答
反對(duì) 回復(fù) 2021-11-09
?
呼喚遠(yuǎn)方

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊

將地址傳入才會(huì)有變化,傳結(jié)構(gòu)體在函數(shù)中只有傳入?yún)?shù)的副本,修改的也只是其副本,建議F9下斷點(diǎn),單步運(yùn)行調(diào)試看看memory就知道了??尚薷娜缦拢?br/>#include<stdio.h>
struct info
{
int k;
char*s;
}t;
void f(struct info* t)
{
t->k=1997;
t->s="Borland";
}
void main()
{
t.k=2000;
t.s="Inprise";
f(&t);
printf("%d,%s\n",t.k,t.s);
}



查看完整回答
反對(duì) 回復(fù) 2021-11-09
  • 3 回答
  • 0 關(guān)注
  • 313 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)