C語(yǔ)言的字符串實(shí)際上是 字符數(shù)組.既然是數(shù)組, 那么數(shù)組頭自然是一個(gè)指針.char str[] = {"abc"};這個(gè)str實(shí)際上是一個(gè)不可變的字符指針.scanf的參數(shù)要求傳入指針. 之后按照格式化字符串對(duì)指針指向的地址賦值..str本身就是一個(gè)指針了, 所以不需要&str,如果&str, 那么得到是就是指針的指針,scanf并不只是對(duì)字符串不加 取地址運(yùn)算符.例如 int arr[] = {1, 2, 3};scanf("%d", arr);這里對(duì)arr照樣不需要取地址運(yùn)算符, 因?yàn)閍rr是數(shù)組頭, 本身就是一個(gè)指針.上面的語(yǔ)句是對(duì)arr數(shù)組的第一個(gè)元素賦值, 就是arr[0];當(dāng)然也可以這么寫(xiě).scanf("%d", &arr[0]);arr[0]是一個(gè)值, 并非指針, 于是對(duì)其取地址.對(duì)于字符串也可以這么寫(xiě).char str[3] ;scanf("%c", &str[0]);這是對(duì)str的第一個(gè)元素賦值也就是 str[0];不知道你看懂了沒(méi)有?
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。