tft每日頭條

 > 科技

 > c語言字符串指針與字符數組

c語言字符串指針與字符數組

科技 更新时间:2024-05-16 03:19:06

c語言字符串指針與字符數組(如何優雅的使用C語言中的字符串)1

在C語言中有兩種使用字符串的方式,用char型指針、用char型數組。那他們有什麼區别和聯系呢,下面來一起來說說:

C語言表示字符串的兩種方式,如下:

c語言字符串指針與字符數組(如何優雅的使用C語言中的字符串)2

首先,任何常量都将被放置到一個固定的内存區域,叫 .rodata 區,也叫常量區。因此上述代碼中的 "abcde" 和 "uvxyz" 都被放置在這裡面。

其次,s1 和 s2 都是普通變量,都被放置在棧内存中。

然後,s1 是一個指針,因此它的尺寸大小永遠都是四字節(32位系統),而 s2 是一個數組,尺寸大小根據具體的内容來決定。

它們變量在内存中的關系如下圖:

c語言字符串指針與字符數組(如何優雅的使用C語言中的字符串)3

對于 s1 而言,僅僅保留了一個地址0x123,該地址就是常量區中字符串 "abcde" 的地址。

對于 s2 而言,則保留了從常量區複制過來了字符串本身的内容 "uvxyz" ,從上圖看到,此時 "uvxyz“ 實際上有兩個副本。

那麼在程序中如何使用這兩種方式呢?答案很簡單,如果僅僅是使用字符串,而不需要修改它,那就使用指針就行了,但是如果涉及需要對字符串内容的修改,那麼就需要使用數組。

c語言字符串指針與字符數組(如何優雅的使用C語言中的字符串)4

上述代碼中,第一行試圖将 "ABCDE" 塞到常量區,顯然是不可行的。而第二行則試圖将 "UVXYZ" 塞入棧中的數組,這是可行的。

char型數組和char型指針是有本質上的區别的,大家千萬不要搞混。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved