国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

解析C++中的字符串處理函數和指針

2020-05-23 14:14:37
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了解析C++中的字符串處理函數和指針,是C++入門學習中的基礎知識,需要的朋友可以參考下

C++字符串處理函數

字符串連接函數 strcat

其函數原型為

 

 
  1. strcat(char[],const char[]); 

strcat是string catenate(字符串連接)的縮寫。該函數有兩個字符數組的參數,函數的作用是:將第二個字符數組中的字符串連接到前面字符數組的字符串的后面。第二個字符數組被指定為const,以保證該數組中的內容不會在函數調用期間修改。連接后的字符串放在第一個字符數組中,函數調用后得到的函數值,就是第一個字符數組的地址。例如:

 

 
  1. char str1[30]=″People′s Republic of ″; 
  2. char str2[]=″China″; 
  3. cout<<strcat(str1, str2)); //調用strcat函數 

輸出:

 

 
  1. People′s Republic of China 

連接前后的狀況如圖所示。

解析C++中的字符串處理函數和指針

字符串復制函數strcpy

其函數原型為:

 

 
  1. strcpy(char[], const char[]); 

strcpy是string copy(字符串復制)的縮寫。它的作用是將第二個字符數組中的字符串復制到第一個字符數組中去,將第一個字符數組中的相應字符覆蓋。例如:

 

 
  1. char str1[10], str2[]=″China″; 
  2. strcpy(str1, str2); 

執行后,str2中的5個字符″China″和′/0′(共6個字符)復制到數組str1中。

關于字符串復制函數strcpy的幾點說明:

在調用strcpy函數時,第一個參數必須是數組名(如str1),第二個參數可以是字符數組名,也可以是一個字符串常量。

可以用strcpy函數將一個字符串中前若干個字符復制到字符數組中去。

只能通過調用strcpy函數來實現將一個字符串賦給一個字符數組,而不能用賦值語句將一個字符串常量或字符數組直接賦給一個字符數組。

字符串比較函數strcmp

其函數原型為

 

 
  1. strcmp(const char[],const char[]); 

strcmp是string compare(字符串比較)的縮寫。作用是比較兩個字符串。由于這兩個字符數組只參加比較而不應改變其內容,因此兩個參數都加上const聲明。以下寫法是合法的:

 

 
  1. strcmp(str1, str2); 
  2. strcmp(″China″, ″Korea″); 
  3. strcmp(str1, ″Beijing″); 

比較的結果由函數值帶回:

如果字符串1=字符串2,函數值為0。

如果字符串1>字符串2,函數值為一正整數。

如果字符串1<字符串2,函數值為一負整數。

字符串比較的規則與其他語言中的規則相同,即對兩個字符串自左至右逐個字符相比(按ASCII碼值大小比較),直到出現不同的字符或遇到′/0′為止。如全部字符相同,則認為相等;若出現不相同的字符,則以第一個不相同的字符的比較結果為準。

注意:對兩個字符串比較,不能用以下形式:

 

 
  1. if(str1>str2) cout<<″yes″; 

字符數組名str1和str2代表數組地址,上面寫法表示將兩個數組地址進行比較,而不是對數組中的字符串進行比較。對兩個字符串比較應該用

 

 
  1. if(strcmp(str1, str2)>0) cout<<″yes″; 

字符串長度函數strlen

函數原型為:

 

 
  1. strlen(const char[]); 

strlen是string length(字符串長度)的縮寫。它是測試字符串長度的函數。其函數的值為字符串中的實際長度,不包括′/0′在內。如:

 

 
  1. char str[10]=″China″; 
  2. cout<<strlen(str); 

輸出結果不是10,也不是6,而是5。

以上是幾種常用的字符串處理函數,除此之外還有其他一些函數。

C++指針的概念

為了說清楚什么是指針,必須弄清楚數據在內存中是如何存儲的,又是如何讀取的。

如果在程序中定義了一個變量,在編譯時就給這個變量分配內存單元。系統根據程序中定義的變量類型,分配一定長度的空間。例如,C++編譯系統一般為整型變量分配4個字節,為單精度浮點型變量分配4個字節,為字符型變量分配1個字節。內存區的每一個字節有一個編號,這圖就是“地址”。

解析C++中的字符串處理函數和指針

請務必弄清楚一個內存單元的地址與內存單元的內容這兩個概念的區別。在程序中一般是通過變量名來對內存單元進行存取操作的。其實程序經過編譯以后已經將變量名轉換為變量的地址,對變量值的存取都是通過地址進行的。這種按變量地址存取變量值的方式稱為直接存取方式,或直接訪問方式。

還可以采用另一種稱為間接存取(間接訪問)的方式。可以在程序中定義這樣一種特殊的變量,它是專門用來存放地址的。

上圖是直接訪問和間接訪問的示意圖。為了將數值3送到變量中,可以有兩種方法:

直接將數3送到整型變量i所標識的單元中。

將3送到指針變量i_pointer所指向的單元(這就是變量i所標識的單元)中。見圖

解析C++中的字符串處理函數和指針

所謂指向,就是通過地址來體現的。

由于通過地址能找到所需的變量單元,因此可以說,地址指向該變量單元。因此將地址形象化地稱為“指針”,一個變量的地址稱為該變量的指針。

如果有一個變量是專門用來存放另一變量地址(即指針)的,則它稱為指針變量。指針變量的值(即指針變量中存放的值)是地址(即指針)。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丹东市| 嵊泗县| 扎赉特旗| 万年县| 宜丰县| 五常市| 太白县| 托克逊县| 连城县| 民权县| 肇州县| 六枝特区| 松江区| 漳州市| 大邑县| 同心县| 阿合奇县| 丹寨县| 濮阳市| 衡山县| 壶关县| 治多县| 寿光市| 措美县| 特克斯县| 古丈县| 石柱| 星子县| 象山县| 沙坪坝区| 汕尾市| 乐至县| 伊宁市| 轮台县| 内江市| 彩票| 永新县| 古交市| 桐庐县| 化州市| 陇川县|