在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語言中的char數(shù)組和char指針有什么區(qū)別?

玩轉(zhuǎn)單片機(jī)與嵌入式 ? 來源:玩轉(zhuǎn)單片機(jī)與嵌入式 ? 2023-01-29 16:35 ? 次閱讀

讓我們通過下面的例子,來了解 C語言中字符數(shù)組和字符指針之間的區(qū)別。

void test()
{
    //arr is array of characters
    char arr[12] = "Aticleworld";

    //ptr is pointer to char
    char *ptr = "Aticleworld";
}
現(xiàn)在,讓我們比較arr(字符數(shù)組)和ptr(字符指針)。

區(qū)別1: 字符串文本是用雙引號(hào)括起來的零個(gè)或多個(gè)多字節(jié)字符的序列。當(dāng)你編寫語句 char arr[12] = "Aticleworld"時(shí),字符串文本中的字符被復(fù)制到 arr. 當(dāng)您編寫語句 char *ptr = "Aticleworld"時(shí),您是讓字符串文本數(shù)組進(jìn)行數(shù)組到指針的轉(zhuǎn)換,以獲取指向其第一個(gè)元素的指針。指針 ptr 指向字符串文本數(shù)組的第一個(gè)元素 ('A').

6aed65a2-9a66-11ed-bfe3-dac502259ad0.png

區(qū)別2: arr 是存儲(chǔ)在連續(xù)內(nèi)存位置的字符集合,而 ptr 保存字符的地址。

arr 包含 12 個(gè)元素,每個(gè)元素位于連續(xù)的內(nèi)存位置。另一方面,ptr 保存字符串文本的第一個(gè)字符的地址。

區(qū)別3:當(dāng)我們?cè)?char 數(shù)組 arr 上使用 sizeof 運(yùn)算符時(shí),它給出字符總數(shù),而 char 指針 ptr 只給出指針的大小。如下:

#include 
int main()
{
    //arr is array of characters
    char arr[] = "Aticleworld";
    //ptr is pointer to char
    char *ptr = "Aticleworld";
    printf("Size of arr %ld
", sizeof(arr));
    // sizeof a pointer is printed which is same for all type
    // of pointers (char *, void *, etc)
    printf("Size of ptr %ld", sizeof(ptr));
    return 0;
}

輸出

Size of arr 24
Size of ptr 4
區(qū)別4: 和指針之間的另一個(gè)重要區(qū)別是,我們可以增加指針,但不能創(chuàng)建數(shù)組的增量。例
arr++ =>非法語句。
ptr++==>正常語句。
區(qū)別5:我們可以將值重新分配給數(shù)組,但字符串文本不可修改。如果程序嘗試修改由字符串文本形成的靜態(tài)數(shù)組,則行為未定義。例

//arr is array of characters
char arr[] = "Aticleworld";
gets(arr); 
fgets(arr,sizeof(arr),stdin); //有效表達(dá)式
scanf("%s", arr); //有效表達(dá)式
strcpy(arr, "aticle"); //有效表達(dá)式
arr[0] = 'a'; //有效表達(dá)式
arr[10] = 'M'; //有效表達(dá)式
arr[11] = 'M'; //有效表達(dá)式

char *ptr = "Aticleworld";


ptr[0]='P';//無效表達(dá)式


*ptr='W';//無效表達(dá)式
無別6: 未初始化的指針也可能導(dǎo)致未定義的行為。請(qǐng)參閱以下示例。
char *ptr;
ptr[0] = 'A'; //未定義的行為
gets(ptr); //未定義的行為
scanf(“%s”, ptr); //未定義的行為
strcpy(ptr, “source”); //未定義的行為
strcat(ptr, “second string”); //未定義的行為
區(qū)別7: Char數(shù)組本質(zhì)上是靜態(tài)的,這意味著您無法調(diào)整數(shù)組的大小,而使用指針,您可以在任何時(shí)間點(diǎn)更改分配的內(nèi)存的大小。

區(qū)別8:數(shù)組完全由程序控制。它將正確分配所需的內(nèi)存,并在超出范圍時(shí)自動(dòng)釋放內(nèi)存。但是,如果分配動(dòng)態(tài)內(nèi)存,則char指針的情況有所不同,您必須手動(dòng)取消分配它,否則會(huì)引入內(nèi)存泄漏。例

void foo1()
{
    //arr是字符數(shù)組
    char arr[12] = "Aticleworld";
}




//Issue memory leak
void foo2()
{
    char *ptr = (char*)malloc(12);

//忘記釋放內(nèi)存
}

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7630

    瀏覽量

    140454
  • 字符
    +關(guān)注

    關(guān)注

    0

    文章

    234

    瀏覽量

    25484
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    484

    瀏覽量

    71017
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    419

    瀏覽量

    26374
  • char
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    3802

原文標(biāo)題:【軟件】C語言中的char數(shù)組和char指針有什么區(qū)別?

文章出處:【微信號(hào):玩轉(zhuǎn)單片機(jī)與嵌入式,微信公眾號(hào):玩轉(zhuǎn)單片機(jī)與嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    C語言數(shù)組指針區(qū)別

    大家好,我是嵌入式老林,從事嵌入式軟件開發(fā)多年,今天分享的內(nèi)容是C語言數(shù)組指針區(qū)別,希望能對(duì)你有所幫助。
    發(fā)表于 07-11 12:40 ?510次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>數(shù)組</b>和<b class='flag-5'>指針</b>的<b class='flag-5'>區(qū)別</b>

    C語言中指針數(shù)組數(shù)組指針區(qū)別

    指針數(shù)組之間存在著緊密的關(guān)系。在本文中,我們將探討指針數(shù)組的關(guān)系、指針算術(shù)和數(shù)組遍歷、多維
    發(fā)表于 08-17 15:29 ?579次閱讀

    指針數(shù)組數(shù)組指針什么區(qū)別和聯(lián)系呢

    什么是指針數(shù)組數(shù)組指針指針數(shù)組數(shù)組
    發(fā)表于 12-24 06:55

    C語言中指針數(shù)組分別有哪些作用呢

    C語言中指針數(shù)組分別有哪些作用呢?
    發(fā)表于 02-25 07:20

    C語言入門教程-用指針操作數(shù)組

    C語言入門教程 在C語言中數(shù)組指針的關(guān)系十分密切。要想有效地使用
    發(fā)表于 07-29 12:18 ?1554次閱讀

    char *和char數(shù)組區(qū)別及內(nèi)核訪問用戶區(qū)

    的也就是兩個(gè)指針了,而對(duì)于char數(shù)組 pa2,它的內(nèi)存表示就是s1的15個(gè)字節(jié)而s2的15個(gè)字節(jié)連續(xù)排放,整個(gè)結(jié)構(gòu)就是實(shí)實(shí)在在的數(shù)據(jù),我們傳入send就將s1和s2的內(nèi)容一塊傳送出去 了,而不僅僅
    發(fā)表于 04-02 14:36 ?3252次閱讀

    指針數(shù)組都是C語言的精髓所在 兩者何聯(lián)系區(qū)別

    指針數(shù)組都是C語言的精髓所在,對(duì)于很多C程序員來說,如果你問這樣一個(gè)問題:數(shù)組
    的頭像 發(fā)表于 05-27 14:51 ?4472次閱讀
    <b class='flag-5'>指針</b>和<b class='flag-5'>數(shù)組</b>都是<b class='flag-5'>C</b><b class='flag-5'>語言</b>的精髓所在 兩者<b class='flag-5'>有</b>何聯(lián)系<b class='flag-5'>區(qū)別</b>

    C語言函數(shù)中的傳值和傳指針到底什么區(qū)別

    我們可能聽過C語言中的傳值和傳指針,在其他語言中,也有傳引用一說,那么他們到底什么區(qū)別呢?如果
    的頭像 發(fā)表于 09-08 10:14 ?5315次閱讀

    C語言函數(shù)參數(shù)關(guān)于傳值和傳指針什么區(qū)別?

    C語言函數(shù)參數(shù)的傳值和傳指針什么區(qū)別
    的頭像 發(fā)表于 02-26 16:35 ?2498次閱讀

    為什么C語言函數(shù)不能返回數(shù)組?

    C語言函數(shù)可以返回指針、結(jié)構(gòu)體,為什么不能返回數(shù)組? 下面一步一步來分析: 1 函數(shù)不能返回數(shù)組C
    的頭像 發(fā)表于 03-29 11:18 ?2213次閱讀

    MCU_C語言中 數(shù)組指針 的應(yīng)用 -- char (*stringp)[]

    定義一個(gè)指向數(shù)組指針stringpchar (*stringp)[];取得某個(gè)數(shù)組的地址 :char *dst = &string[10];
    發(fā)表于 11-29 18:06 ?2次下載
    MCU_<b class='flag-5'>C</b><b class='flag-5'>語言中</b> <b class='flag-5'>數(shù)組</b>型<b class='flag-5'>指針</b> 的應(yīng)用 -- <b class='flag-5'>char</b> (*stringp)[]

    C語言中指針(重點(diǎn))超詳細(xì)

    C語言中指針1、指針是什么2、指針指針類型2.1、指針
    發(fā)表于 01-13 14:10 ?11次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>的<b class='flag-5'>指針</b>(重點(diǎn))超詳細(xì)

    C語言指針數(shù)組區(qū)別

    C語言教程中我們使用通過數(shù)組名通過偏移和指針偏移都可以遍歷數(shù)組,那么指針
    的頭像 發(fā)表于 07-18 16:29 ?2217次閱讀

    C語言中什么是指針數(shù)組

    C語言中一個(gè)數(shù)組,若其元素均為指針類型數(shù)據(jù),稱為指針數(shù)組,也就是說,
    的頭像 發(fā)表于 03-10 15:26 ?2164次閱讀

    Char數(shù)組與String是如何從統(tǒng)一走向分離的?

    在很多編程語言中,經(jīng)常用 String 類型來表示字符串,用 Char 來表示字符類型;
    發(fā)表于 05-19 09:49 ?384次閱讀
    <b class='flag-5'>Char</b><b class='flag-5'>數(shù)組</b>與String是如何從統(tǒng)一走向分離的?
    主站蜘蛛池模板: 亚洲伊人tv综合网色 | 精品国产中文一级毛片在线看 | 亚洲一区欧美日韩 | 在线视频一区二区 | 正在播放国产巨作 | 一级片免费在线播放 | 免费看毛片网 | 777精品视频 | 五月婷婷激情综合网 | 五月天精品| 亚洲在线a | 99精品视频免费 | 狠狠色网站 | 在线观看国产久青草 | 中文一区在线观看 | 午夜手机福利视频 | 日本一区二区在线视频 | 香蕉成人999视频 | 激情爱爱的免费视频 | 草草影院www色极品欧美 | 在线亚洲精品 | 成年男人永久免费看片 | 女人张开腿 让男人桶视频 女人张开腿等男人桶免费视频 | 天天插天天插天天插 | 天天综合网色 | 2021久久天天躁狠狠躁夜夜 | 啪啪免费网 | 手机看片福利盒子久久青 | 两人性潮高免费视频看 | 91色在线播放 | 1024手机看片国产 | 国产精品欧美激情第一页 | 狠狠狠| 黄色片xxxx | 乱子伦xxxx厨房 | 一道精品一区二区三区 | 天天干天天草 | 欧美一二区视频 | ww欧洲ww在线视频看ww | 在线观看免费高清 | 亚洲人成网站色7799在线播放 |