欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析C語言中對于char*和char[]的理解

 更新時間:2023年02月06日 15:00:54   作者:ZSYL  
char * s 只是一個保存字符串首地址的指針變量,char a[]是許多連續(xù)的內存單元,單元中的元素是char型,char * 和 char a[]具有相同的效果,源于字符串的本質,這篇文章主要介紹了C語言中對于char*和char[]的理解,需要的朋友可以參考下

C語言對于char*和char[]的理解

1、char*和char[]的共同點

都是指針,指向第一個字符所在的地址,C語言指針可以代替數組使用。

指針也是一種變量,只不過它的內存單元中保存的是一種標識其他位置的地址,而地址也是整數,在32位平臺下,就是32位,4個字節(jié)

指針的指向是指 指針變量所保存的其他的地址單元中 所存放的數據類型

int *ptr; //ptr指針保存的地址所在內存單元中的數據類型是整型
float *p; //這個p指針指向的內存地址存放的元素類型就是浮點型

而不管指向的數據類型是哪種,其實對于指針本身的值永遠是整型,因為它保存的地址就是整數。

2、char*的用法

3、char[]的用法

//char[]
char a[20] = "aaa";
char b[] = "bbbbb";
char c[] = {'s','t','r','i','n','g','\0'};
char d[] = {"dddd"};
 
//一般這樣初始化
char num[20] = {0};
//初始化的目的是為了添加\0,否則\0會跑到莫名其妙的地方導致很多錯誤。
//ASCII碼中0對應的是nul符,即\0。這一行的意義就是給0~19都賦\0。

4、怎么輸出char*地址

雖然指針名就代表的是地址,但在輸出時需要加&,僅限cout。

const char* p = "ppp"; 
cout<<&p<<endl; //地址 方法一
cout<<(void*)p<<endl;//地址 方法二
cout<<p<<endl; //ppp
const char* a = "ppp";
printf("%p \n", a); //16進制地址,不過 %p的輸出格式并不統(tǒng)一,有的編譯器帶0x前綴,有的不帶
printf("%#X \n", a);//16進制地址,前綴統(tǒng)一是0x
printf("%s \n", a);  //ppp

5、strlen和sizeof

sizeofstrlen
性質運算符函數
功能以字節(jié)為單位計算操作數占用的內存大小計算字符串的長度(strlen函數遇到\0就會停止下來,返回\0前出現的字符個數,不包括\0)
時間編譯時運行時
參數類型/各種objectconst char*\char*\char[]
返回值size_tsize_t
頭文件運算符沒有頭文件string.h

6、char*和string

區(qū)別stringchar*
本質STL中的一個容器,string封裝了char*。指針
內存管理由系統(tǒng)管理,除非系統(tǒng)內存池用完,否則不會出現內存問題棧/堆,如果是堆需要手動釋放

7、總結

1、const在*前修飾指定的類型,const在*之后修飾指針。

2、 讀入只能是char [],因為讀入需要明確的地址,注意必須標定長度。

總結:char * s 只是一個保存字符串首地址的指針變量,char a[]是許多連續(xù)的內存單元,單元中的元素是char型,char * 和 char a[]具有相同的效果,源于字符串的本質,即給一個字符串地址,便可以操作字符串,但char* 和 char a[]的本質屬性不一樣。

改值還得是char*,因為方便。

Reference

Link
Link

到此這篇關于C語言中對于char*和char[]的理解的文章就介紹到這了,更多相關C語言char*和char[]內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++結構體詳解

    C++結構體詳解

    這篇文章主要介紹了C++ 結構體與共用體的的相關資料,幫助大家更好的理解和學習c++,感興趣的朋友可以了解下,希望能夠給你帶來幫助
    2021-09-09
  • C++通過類實現控制臺貪吃蛇

    C++通過類實現控制臺貪吃蛇

    這篇文章主要為大家詳細介紹了C++通過類實現控制臺貪吃蛇,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C/C++讀取大文件數據方式詳細講解

    C/C++讀取大文件數據方式詳細講解

    這篇文章主要介紹了C語言/C++讀取大文件數據的完整方式過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-09-09
  • C語言的字符空間與非字符空間你了解嗎

    C語言的字符空間與非字符空間你了解嗎

    這篇文章主要介紹了C語言的字符空間與非字符空間,本文給大家介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下,希望能給你帶來幫助
    2021-08-08
  • c語言實現足球比賽積分統(tǒng)計系統(tǒng)

    c語言實現足球比賽積分統(tǒng)計系統(tǒng)

    這篇文章主要為大家詳細介紹了c語言實現足球比賽積分統(tǒng)計系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 用C語言實現自動售貨機

    用C語言實現自動售貨機

    這篇文章主要為大家詳細介紹了用C語言實現自動售貨機,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C語言實現簡單猜拳小游戲

    C語言實現簡單猜拳小游戲

    這篇文章主要為大家詳細介紹了C語言實現簡單猜拳小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • C++中的Qt?QTableView詳解

    C++中的Qt?QTableView詳解

    這篇文章主要介紹了Qt?QTableView詳解,主要包括常用接口,設置item屬性,右鍵彈出菜單,結合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • vscode+leetcode環(huán)境配置方法

    vscode+leetcode環(huán)境配置方法

    這篇文章主要介紹了vscode+leetcode環(huán)境配置,本文通過實例圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • C++實現類似延時停頓的打字效果

    C++實現類似延時停頓的打字效果

    這篇文章主要介紹的是使用C++實現類似延時停頓的打字效果的代碼,非常的簡單,推薦給大家,有需要的小伙伴可以參考下。
    2015-03-03

最新評論