日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

对字符数组输入输出数组名是否加取地址符的一些理解

發(fā)布時(shí)間:2023/11/28 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对字符数组输入输出数组名是否加取地址符的一些理解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

字符數(shù)組名的兩個(gè)含義:

定義了字符型數(shù)組char name[10]。name有兩個(gè)含義

  1. 一個(gè)是代表著name這個(gè)數(shù)組第一個(gè)位置的地址,也就是name[0]的地址。可以說name就等價(jià)于&name[0]。
  2. 還有一種意思就是指代name整個(gè)數(shù)組。&name 就是整個(gè)數(shù)組的首地址。所以name和&name取得的地址是相同的。

下面舉一個(gè)簡單的例子:

#include<stdio.h>
int main(void)
{char name[10]={"hello csdn"};if(name==&name[0]){printf("name與&name[0]取得的地址相同,地址為:%p",name);}else{printf("取得的地址不同");}return 0;

以下為代碼輸出結(jié)果:

name和&name區(qū)別

不同點(diǎn)在于:name+1表示的是數(shù)組第二個(gè)元素的地址,而&name+1表示的是整個(gè)數(shù)組后又一個(gè)name數(shù)組的首地址,即&name[10]后一個(gè)新的name數(shù)組的首地址。如下:`

#include<stdio.h>
int main(void)
{char name[10]={"hello csdn"};printf("name+1的地址:%p\n",name+1);printf("&name+1的地址:%p\n",&name+1);return 0;
}

輸出:

總結(jié)

所以說scanf("%s",name);和scanf("%s",&name);執(zhí)行后的結(jié)果是一樣的,都是name的首地址,都是給字符數(shù)組name賦值。推薦用 scanf("%s",name); ,第二種不容易理解也容易犯錯(cuò),有些編譯軟件也不支持會(huì)報(bào)錯(cuò)。

補(bǔ)充

printf("%s",name); 字符串的讀取。是從字符數(shù)組第一個(gè)地址name所對(duì)應(yīng)的數(shù)據(jù)開始,對(duì)應(yīng)ASCLL將其轉(zhuǎn)化輸出,直到遇見’\0’為止。這也就解釋了printf("%s",name);中的name既然是地址,為啥不加*號(hào),不是*name而是name。就是因?yàn)樗妮敵隹刂品?s的作用。如果是printf("%d",name);的話,那么它輸出的將是name第一個(gè)元素的地址。

總結(jié)

以上是生活随笔為你收集整理的对字符数组输入输出数组名是否加取地址符的一些理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。