在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/C/ 小白疑惑問(wèn)題-scanf_s?

小白疑惑問(wèn)題-scanf_s?

在自學(xué)結(jié)構(gòu)體這個(gè)到底是哪錯(cuò)了總是這樣。圖片描述

圖片描述

回答
編輯回答
黑與白

首先, 把你的代碼圖片換成代碼, 並且用本站自帶的編輯器/markdown語(yǔ)法格式化成代碼格式, 切記, 永遠(yuǎn)不要貼代碼圖片.

至於你的代碼, 有兩個(gè)問(wèn)題:

  1. scanf_smsvc的私貨, 它要求你給出長(zhǎng)度信息, 你沒(méi)有給.
  2. scanf_s/scanf接受的是const char *, 而在這裏你的name的類(lèi)型是char [4], 即, 是一個(gè)字符數(shù)組, 切忌把字符數(shù)組和指針畫(huà)等號(hào), 它們倆是兩個(gè)不同的類(lèi)型(derived type). 但是, 數(shù)組有時(shí)候能隱式轉(zhuǎn)換成指針, 比如在scanf_s/scanf這裏, 要求的形參(parameter)是指針, 對(duì)吧, 但是你給的實(shí)參(argument)是數(shù)組, 在參數(shù)傳參時(shí), 就會(huì)發(fā)生一個(gè)隱式轉(zhuǎn)換, 從數(shù)組磚到指針. 而如果你傳入的是&name, 那麼你需要明白的是name&name的值雖然是相同的(都是二進(jìn)制數(shù), 可以理解爲(wèi)地址), 但是它們倆的類(lèi)型是不一樣的, name的類(lèi)型窩上面說(shuō)過(guò)了, 是char [4], which可以隱式轉(zhuǎn)換成指針, 然而&name的類(lèi)型其實(shí)是char (*)[4], 他是一個(gè)指向數(shù)組(whose長(zhǎng)度是4)的指針 是無(wú)法隱式轉(zhuǎn)換到const char *, which是scanf/scanf_s要求的類(lèi)型. 所以引發(fā)了異常.

解決方案:

scanf_s("%s", stu.name, sizeof(stu.name));

簡(jiǎn)體版本:

首先, 把你的代碼圖片換成代碼, 并且用本站自帶的編輯器/markdown語(yǔ)法格式化成代碼格式, 切記, 永遠(yuǎn)不要貼代碼圖片.

至于你的代碼, 有兩個(gè)問(wèn)題:

  1. scanf_smsvc的私貨, 它要求你給出長(zhǎng)度信息, 你沒(méi)有給.
  2. scanf_s/scanf接受的是const char *, 而在這里你的name的類(lèi)型是char [4], 即, 是一個(gè)字符數(shù)組, 切忌把字符數(shù)組和指針畫(huà)等號(hào), 它們倆是兩個(gè)不同的類(lèi)型(derived type). 但是, 數(shù)組有時(shí)候能隱式轉(zhuǎn)換成指針, 比如在scanf_s/scanf這里, 要求的形參(parameter)是指針, 對(duì)吧, 但是你給的實(shí)參(argument)是數(shù)組, 在參數(shù)傳遞時(shí), 就會(huì)發(fā)生一個(gè)隱式轉(zhuǎn)換, 從數(shù)組磚到指針. 而如果你傳入的是&name, 那么你需要明白的是name&name的值雖然是相同的(都是二進(jìn)制數(shù), 可以理解為地址), 但是它們倆的類(lèi)型是不一樣的, name的類(lèi)型窩上面說(shuō)過(guò)了, 是char [4], which可以隱式轉(zhuǎn)換成指針, 然而&name的類(lèi)型其實(shí)是char (*)[4], 它是一個(gè)指向數(shù)組(whose 長(zhǎng)度是4)的指針, 是無(wú)法隱式轉(zhuǎn)換到const char *, which是scanf/scanf_s要求的類(lèi)型. 所以引發(fā)了異常.

解決方案:

scanf_s("%s", stu.name, sizeof(stu.name));
2018年2月15日 14:19