C語(yǔ)言一維數(shù)組初步學(xué)習(xí)筆記
數(shù)組
可以存儲(chǔ)一組或者多組數(shù)值的變量,里面包含多個(gè)元素,數(shù)組的每個(gè)成員都是一個(gè)數(shù)組元素。
一維數(shù)組
定義:類型 數(shù)組名[常量表達(dá)式] = {值1, 值2, 值3…};
int a[3] = {0, 1, 2}; float f[2] = {1.2, 2.3, 3.14}; char str[] = {'h', 'e', 'l', 'l', 'o'}; chat str1 = "iPhone";//這也是定義字符數(shù)組的方法,字符數(shù)組后面會(huì)詳細(xì)講解,這里先了解一下
當(dāng)數(shù)組元素個(gè)數(shù)為變量時(shí),只能聲明數(shù)組,不能直接賦值:
int length = 4; int a[length]; //這樣可以 int a[length] = {2, 4, 6, 8};//這樣的話就會(huì)報(bào)錯(cuò)
注意事項(xiàng):
1、系統(tǒng)不會(huì)檢測(cè)數(shù)組元素的下標(biāo)是否越界,編程時(shí),必須保證數(shù)組下標(biāo)不能越界。
2、不能這樣定義數(shù)組 int array[] = {}; //數(shù)組個(gè)數(shù)和初始值不能同時(shí)為空
3、也不能這樣定義數(shù)組 int array[2] = {1, 2, 3}; //數(shù)組的值的個(gè)數(shù)大于數(shù)組的個(gè)數(shù)
4、數(shù)組是一個(gè)整體,不能直接參加運(yùn)算,只能對(duì)單個(gè)元素進(jìn)行處理,通常用到數(shù)組的地方都會(huì)用到循環(huán)
常見數(shù)組操作
如果初始化數(shù)組的時(shí)候,數(shù)組的元素個(gè)數(shù)確定,那么常量表達(dá)式可以不寫:
int a[] = {1, 3, 5, 7, 9};//數(shù)組的長(zhǎng)度為5 相當(dāng)于int a[5] = {1, 3, 5, 7, 9};
int 就是數(shù)組類型,表示這個(gè)數(shù)組中的每個(gè)元素都是 int 類型。
訪問(wèn):通過(guò)數(shù)組名+下標(biāo)去訪問(wèn)數(shù)組中的元素,而且注意數(shù)組的下標(biāo)是從 0 開始的,a[0] 就是第一個(gè)元素,a[1] 代表第二個(gè)元素,a[2] 代表第三個(gè)元素。所以數(shù)組的最后一個(gè)元素就是 數(shù)組的長(zhǎng)度 – 1,一定不要寫a[3],這樣的話就屬于數(shù)組越界。
在數(shù)組的訪問(wèn)的時(shí)候我們通常會(huì)通過(guò) for 循環(huán)來(lái)操作,這個(gè)操作一般稱為遍歷
int ages[28]; //循環(huán)賦值 for(int i = 0; i < 28; i++) { int age = arc4random() % 13 + 18;//每個(gè)人的年齡的范圍是:18 ~ 30 之間的隨機(jī)值 ages[i] = age;//給每個(gè)元素賦值 } //訪問(wèn),也叫遍歷 for(int i = 0; i < 28; i++) { printf("a[%d] = %d ", i, ages[i]); }
兩個(gè)數(shù)組的每個(gè)元素對(duì)應(yīng)相加,相加的和存放到第三個(gè)數(shù)組中:
int a1[] = {2, 4, 5, 6, 10}; int a2[] = {1, 3, 4, 5, 6}; int a3[5]; for(int i = 0; i < 5; i++) { a3[i] = a1[i] + a2[i]; printf("a3[%d] = %d ", i, a3[i]); }
輸出結(jié)果為:
a3[0] = 3 a3[1] = 7 a3[2] = 9 a3[3] = 11 a3[4] = 16
數(shù)組的長(zhǎng)度如何計(jì)算:
sizeof(數(shù)組名)/sizeof(數(shù)組第一個(gè)元素)
int arr[] = {2, 3, 4, 6, 7}; int length = sizeof(arr) / sizeof(arr[0]); printf("length = %d\n", length);
輸出結(jié)果為:
length = 5
字符數(shù)組:用于存放字符變量的數(shù)組稱為字符數(shù)組,有兩種定義格式:
char str[4] = {'a', 'b', 'c', 'd'}; char str2[] = "iPhone";//另外一種方式
字符串的輸出:
printf("str2 = %s\n", str2);//%s 輸出字符串,遇到 '\0' 結(jié)束
有'\0'結(jié)束標(biāo)識(shí)的字符數(shù)組也稱為字符串,系統(tǒng)提供了許多的一些字符串的函數(shù)
size_t strlen(const char *):計(jì)算字符串長(zhǎng)度,是字符串的有效長(zhǎng)度,不算'\0′
char str[] = "iPhone"; unsigned long length = strlen(str);//strlen 表示有效長(zhǎng)度 printf("length = %lu\n", length);
輸出結(jié)果為:
length = 6
strlen() 的實(shí)現(xiàn)原理:就是遍歷字符串,當(dāng)遇到 ‘\0′ 的時(shí)候就結(jié)束。
char *strcpy(char *, const char *):字符串拷貝
char str1[] = "Unity"; char str2[] = "Android....."; printf("%s\n", strcpy(str1, str2));
輸出結(jié)果:
Android
char *strcat(char *, const char *):字符串拼接
char str1[] = "Unity"; char str2[] = " iPhone"; printf("%s\n", strcat(str1, str2));
輸出結(jié)果:
Unity iPhone
int strcmp(const char str1*, const char str2*):字符串比較,并且根據(jù) str1 按照字典順序小于、等于或大于 str2 的結(jié)果分別返回負(fù)整數(shù)、0或正整數(shù)。該返回值是 str1 和 str2 由前向后逐字符比較時(shí)遇到的第一個(gè)不相等字符處的字符的差值
char str1[] = "Unity"; char str2[] = "iPhone"; printf("%d\n", strcmp(str1, str2));
輸出結(jié)果:
如果pa指向數(shù)組中的某個(gè)元素,那么pa+1將指向下一個(gè)元素,pa+i指向下i個(gè)元素。所以,若果pa指向a[0],那么*pa其實(shí)就是a[0],*(pa+1)就是a[1],*(pa+i)就是a[i]。根據(jù)這個(gè)思路,我們可以使用指針來(lái)訪問(wèn)數(shù)組。
#include <stdio.h> int main(int argc, char *argv[]) { int score[10]={76,85,90,67,59,79,82,95,91,65}; int wait, length, i; length = sizeof(score) / sizeof(score[0]); for(i = 0; i < length; i++) { printf("%d \n", *(score + i)); } scanf("%d", &wait); }
程序輸出:
76 85 90 67 59 79 82 95 91 65
數(shù)組下標(biāo)與指針關(guān)系很密切。執(zhí)行語(yǔ)句 pa = &a[0] 后,pa 和 a 就具有相同的值了,并且 *pa=a[0]。實(shí)際上C語(yǔ)言在計(jì)算數(shù)組下標(biāo)時(shí)也是使用指針來(lái)完成的。下標(biāo)與指針其實(shí)是等價(jià)的。
當(dāng)把一個(gè)數(shù)組名傳遞給一個(gè)函數(shù)的時(shí)候,實(shí)際上傳遞的是該數(shù)組的第一個(gè)元素的地址。所以,數(shù)組名參數(shù)必須是一個(gè)指針。
計(jì)算字符串長(zhǎng)度的程序可以寫成以下:
int strlen(char *s) { int n; for(n = 0; *s != '\0'; s++) n++; return n; }
s 是指針,也就是一個(gè)變量,對(duì)它進(jìn)行自增是合法的。
- 關(guān)于C語(yǔ)言一維數(shù)組算法問(wèn)題詳解
- 關(guān)于C語(yǔ)言中的指針與二維數(shù)組
- C語(yǔ)言二維數(shù)組指針的概念及使用
- C語(yǔ)言與java語(yǔ)言中關(guān)于二維數(shù)組的區(qū)別
- 從頭學(xué)習(xí)C語(yǔ)言之二維數(shù)組
- C語(yǔ)言面試C++二維數(shù)組中的查找示例
- C語(yǔ)言二維數(shù)組幾種常用的表示方法
- C語(yǔ)言二維數(shù)組中的查找的實(shí)例
- C語(yǔ)言 指針與二維數(shù)組詳解
- 直觀理解C語(yǔ)言中指向一位數(shù)組與二維數(shù)組的指針
- C語(yǔ)言中的一維數(shù)組與二維數(shù)組的實(shí)現(xiàn)
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)超市信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)超市信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03使用C語(yǔ)言實(shí)現(xiàn)本地socke通訊的方法
這篇文章主要介紹了?使用C語(yǔ)言實(shí)現(xiàn)本地socke通訊,代碼分為服務(wù)器代碼和客戶端代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12C語(yǔ)言深入探索數(shù)據(jù)類型的存儲(chǔ)
使用編程語(yǔ)言進(jìn)行編程時(shí),需要用到各種變量來(lái)存儲(chǔ)各種信息。變量保留的是它所存儲(chǔ)的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個(gè)變量時(shí),就會(huì)在內(nèi)存中保留一些空間。您可能需要存儲(chǔ)各種數(shù)據(jù)類型的信息,操作系統(tǒng)會(huì)根據(jù)變量的數(shù)據(jù)類型,來(lái)分配內(nèi)存和決定在保留內(nèi)存中存儲(chǔ)什么2022-07-07C語(yǔ)言中pthread_exit和pehread_join的使用
pthread_exit用于強(qiáng)制退出一個(gè)線程,pthread_join用于阻塞等待線程退出,獲取線程退出狀態(tài),本文主要介紹了C語(yǔ)言中pthread_exit和pehread_join函數(shù)的使用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02貪心算法的C語(yǔ)言實(shí)現(xiàn)與運(yùn)用詳解
這篇文章主要介紹了貪心算法的C語(yǔ)言實(shí)現(xiàn)與運(yùn)用詳解,運(yùn)用么,就是文中所附的ACM練習(xí)題,哈哈:D需要的朋友可以參考下2015-08-08華為云開發(fā)工具CodeArts IDE for C/C++開發(fā)使用指南
CodeArts IDE是一個(gè)集成開發(fā)環(huán)境(IDE),它提供了開發(fā)語(yǔ)言和調(diào)試服務(wù),本文主要介紹了華為云開發(fā)工具CodeArts IDE for C/C++ 開發(fā)使用指南,感興趣的可以了解一下2023-08-08