日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

c语言中字母的定义,c语言字符串定义与初始化 - 且听风吟

發(fā)布時間:2025/3/11 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言中字母的定义,c语言字符串定义与初始化 - 且听风吟 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

字符串的兩種定義方式

char數(shù)組

char sa[] = “hello world”;

char指針

char *sp = “hello world”;

這兩種方式都產(chǎn)生了一個”hello world”的字符串常量,字符串常量存儲在靜態(tài)存儲區(qū)中,靜態(tài)存儲區(qū)中的內(nèi)容在程序運行的整個過程中都存在,而且只存儲一份。

數(shù)組與指針的關(guān)系

在第一種定義中,字符串常量在編譯時就已經(jīng)分配好了空間,但直到運行時才會為數(shù)組分配存儲空間,這時,存儲在靜態(tài)存儲區(qū)中的字符串常量會被拷貝一份到數(shù)組中,此后,數(shù)組名sa與&sa[0]等價。重要的是,sa是一個常量,你不能修改sa的值,你可以通過sa+1來標(biāo)識數(shù)組里的下一個元素,也可以修改數(shù)組里的元素。然而,sa++是不允許的,因為自增運算符只能作用于變量而不是常量。

第二種定義中,程序運行時只為指針變量sp分配了存儲空間,用來字符串常量”hello world”的地址,這時,字符串常量沒有被拷貝。sp的值是可以改變的,如++sp將指向字符e。

總之,數(shù)組初始化是從靜態(tài)存儲區(qū)中把一個字符串拷貝給數(shù)組,而指針初始化只是復(fù)制這個字符串的地址。

示例

#include

int main(int args, char **argv) {

char sa[] = "hello world";

char *sp = "hello world";

// sa++; 錯誤,sa是常量

sp++;

sa[1] = 'M';

*(sa+2) = 'X';

// sp[1] = 'M'; // 錯誤,不能修改常量值

printf("%s\n", sa);

}

總結(jié)

以上是生活随笔為你收集整理的c语言中字母的定义,c语言字符串定义与初始化 - 且听风吟的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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