程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言入門知識 >> C語言(20)

C語言(20)

編輯:C語言入門知識

一 字符數組定義和初始化

字符串在C語言中是一種常用的數值對象,用於表示若干個字符的集合。

先了解第一個關於字符的知識點,字符數組的使用,字符數組顧名思義就是元素為字符的數組,

用於存儲char數據類型的數組容器。定義與使用與其他類型的數組基本一樣。

字符數組的定義語法:

char 數組名[數組容量];

注: 在定義數組容量時,通常需要通過常量表示,方便維護。

關於一維數組:一維數組

eg:

#include "stdio.h"

#define ARR_LENGTH 10

void main() {

int i = 0;

/* 字符數組的定義和初始化 */

char arr[ARR_LENGTH] = {'a','b','c','d','e','f','g','h','i','j'};

/* 循環輸出數組元素 */

for (i=0;i程序運行結果:

 

\

 

char與整數是相通的,char型可以看做是字長為1的字節的整數,所以也可以用整數數組來存儲字符。用整數數組會存在一個問題,就是浪費存儲空間,每個char占用1個字節,而每個int則占用4個字節,這就是使用int存儲char浪費空間的原因,結論就是用char數組容器存char。字符數組初始化:字符數組的初始化與其它類型數組的初始化一樣,分別有三種形式:1. 指定數組容量,給每個元素初始化char arr[4]={'a','b','c','d'};2. 指定數組容量,給部分元素初始化,其余元素編譯器自動初始化為0char arr[4]={'a','b'};3. 不指定數組容量初始化,編譯器根據元素自動計算長度,然後給每個元素賦值cahr arr[] = {'a','b','c','d','c'};關於初始化的實例:#include "stdio.h"

#define ARR_LENGTH 5

void main() {

int i = 0;

/* 數組3中初始化方式 */

/* 第一種: 指定數組容量,初始化全部元素 */

char arr1[ARR_LENGTH] = {'a','b','c','d','e'};

/* 第二種: 指定數組容量,初始化部分元素 */

char arr2[ARR_LENGTH] = {'a','b','c'};

/* 第三種: 不指定數組容量初始化 */

char arr3[] = {'a','b','c'};

printf("******第一種初始化輸出******\n");

for (i=0;i

二 二維字符數組二維字符數組的定義,初始化與其它類型的二維數組一樣。參考:二維數組三 字符串常量字符串常量是指用以表示字符串數據的常量,是包含在一對引號" "中的字符集合。比如:"Hello,world"該字符串常量在C語言中被處理為一維字符數組存儲在內存中的一塊連續的區域內。但是字符串常量的存儲與一維字符數組的存儲是不一樣的。將"Hello,world"字符串常量的在內存中的存儲區域如下:

 

\

 

定義字符數組:

char arr[] = {'H', 'e', 'l', 'l', ',', 'w', 'o', 'r', 'l', 'd'};字符數組的存儲如下:

 

\

 

從字符串與字符數組二者的存儲形式可以看出,字符串常量與字符數組存儲十分相似,只是在字符串常量的存儲最後多了個\0, 這個\0的作用是字符串定義結束的標識,也就是字符串的終止符。系統在處理字符串的時候只要遇到\0,標識該條指令處理結束,無需往下處理。eg:#include "stdio.h"

void main() {

printf("Hello\0world");

}運行結果:

 

\

 

從運行結果可以看出,理論上應該把輸出函數中雙引號內容都輸出,可是只輸出了Hello後半部分沒有輸出,是因為編譯器在處理時遇到了\0,終止該條指令處理,直接輸出Hello四 字符串變量字符串變量實際就是一維字符數組,字符串變量的定義通過一維數組配合完成,使用字符串常量初始化一維數組,就可以得到一個字符串變量,格式如下:char str[15] = {"Hello,world"};將內容賦值給數組str的前幾個相應的內存空間,不足的自動初始化為0;當然我們可以去掉花括號{}:char str[15] = "Hello,world";也可以不指定數組容量:char str[] = "Hello,world";實例:#include "stdio.h"

void main() {

char str1[15] = {"Hello,world"};

char str2[15] = "Hello,world";

char str3[] = "Hello,world";

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

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

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

}

運行結果:

 

\

 

注:字符串變量在內存中以一維數組的形式存放。五 格式化輸入和輸出字符串輸入:通過scanf函數實現格式化輸入,字符串格式符: %s。scanf語句會以字符串的形式讀取數值,直到遇到空白符,比如空格符號,回車符,制表符,字符串終止符,將會停止讀取。也就是說,單獨說空格符的例子,如果你輸入Hello world,中間有空格符,當你回車後,scanf輸入函數讀取數值將會只讀入Hello這個幾個字符,因為讀到o之後遇到了空格,則讀入結束。eg:#include "stdio.h"

void main() {

char str[] = {"Hello,world"};

/* 初始化的str */

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

printf("請輸入字符串,然後按下回車:\n");

scanf("%s",&str);

/* 輸入的str,將初始化的覆蓋掉 */

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

}運行程序,然後輸入想要輸入的字符串,然後回車,打印出輸入的字符串。輸出:通過printf函數實現格式化輸出,字符串格式符: %s。格式: printf("%s", str);將從str開始輸出,知道遇到\0結束為止。eg:#include "stdio.h"

void main() {

char str1[] = "Hello,world";

char str2[] = "Hello,world,你好!";

char str3[] = "Hello,world\0,你好!";

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

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

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

}運行結果:

 

\

 

六 字符串的長度字符串長度計算的函數strlen,使用該函數需要引入頭文件string.h特別注意\0為終止符的情況,長度只計算到終止符的位置。也就是說,只計算你能通過printf方法打印出來的,有效的字符串的長度。eg:#include "stdio.h"

/* 引入頭文件string.h*/

#include "string.h"

void main() {

char str[] = {"Hello,world"};

int a = 0;

/* strlen的使用 */

a = strlen(str);

printf("a=%d\n",a);

}

運行結果:

 

\
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved