C說話一維數組初步進修筆記。本站提示廣大學習愛好者:(C說話一維數組初步進修筆記)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話一維數組初步進修筆記正文
數組
可以存儲一組或許多組數值的變量,外面包括多個元素,數組的每一個成員都是一個數組元素。
一維數組
界說:類型 數組名[常量表達式] = {值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";//這也是界說字符數組的辦法,字符數組前面會具體講授,這裡先懂得一下
當數組元素個數為變量時,只能聲明數組,不克不及直接賦值:
int length = 4; int a[length]; //如許可以 int a[length] = {2, 4, 6, 8};//如許的話就會報錯
留意事項:
1、體系不會檢測數組元素的下標能否越界,編程時,必需包管數組下標不克不及越界。
2、不克不及如許界說數組 int array[] = {}; //數組個數和初始值不克不及同時為空
3、也不克不及如許界說數組 int array[2] = {1, 2, 3}; //數組的值的個數年夜於數組的個數
4、數組是一個全體,不克不及直接加入運算,只能對單個元素停止處置,平日用到數組的處所都邑用到輪回
罕見數組操作
假如初始化數組的時刻,數組的元素個數肯定,那末常量表達式可以不寫:
int a[] = {1, 3, 5, 7, 9};//數組的長度為5 相當於int a[5] = {1, 3, 5, 7, 9};
int 就是數組類型,表現這個數組中的每一個元素都是 int 類型。
拜訪:經由過程數組名+下標去拜訪數組中的元素,並且留意數組的下標是從 0 開端的,a[0] 就是第一個元素,a[1] 代表第二個元素,a[2] 代表第三個元素。所以數組的最初一個元素就是 數組的長度 – 1,必定不要寫a[3],如許的話就屬於數組越界。
在數組的拜訪的時刻我們平日會經由過程 for 輪回來操作,這個操作普通稱為遍歷
int ages[28]; //輪回賦值 for(int i = 0; i < 28; i++) { int age = arc4random() % 13 + 18;//每一個人的年紀的規模是:18 ~ 30 之間的隨機值 ages[i] = age;//給每一個元素賦值 } //拜訪,也叫遍歷 for(int i = 0; i < 28; i++) { printf("a[%d] = %d ", i, ages[i]); }
兩個數組的每一個元素對應相加,相加的和寄存到第三個數組中:
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]); }
輸入成果為:
a3[0] = 3 a3[1] = 7 a3[2] = 9 a3[3] = 11 a3[4] = 16
數組的長度若何盤算:
sizeof(數組名)/sizeof(數組第一個元素)
int arr[] = {2, 3, 4, 6, 7}; int length = sizeof(arr) / sizeof(arr[0]); printf("length = %d\n", length);
輸入成果為:
length = 5
字符數組:用於寄存字符變量的數組稱為字符數組,有兩種界說格局:
char str[4] = {'a', 'b', 'c', 'd'}; char str2[] = "iPhone";//別的一種方法
字符串的輸入:
printf("str2 = %s\n", str2);//%s 輸入字符串,碰到 '\0' 停止
有'\0'停止標識的字符數組也稱為字符串,體系供給了很多的一些字符串的函數
size_t strlen(const char *):盤算字符串長度,是字符串的有用長度,不算'\0′
char str[] = "iPhone"; unsigned long length = strlen(str);//strlen 表現有用長度 printf("length = %lu\n", length);
輸入成果為:
length = 6
strlen() 的完成道理:就是遍歷字符串,當碰到 ‘\0′ 的時刻就停止。
char *strcpy(char *, const char *):字符串拷貝
char str1[] = "Unity"; char str2[] = "Android....."; printf("%s\n", strcpy(str1, str2));
輸入成果:
Android
char *strcat(char *, const char *):字符串拼接
char str1[] = "Unity"; char str2[] = " iPhone"; printf("%s\n", strcat(str1, str2));
輸入成果:
Unity iPhone
int strcmp(const char str1*, const char str2*):字符串比擬,而且依據 str1 依照字典次序小於、等於或年夜於 str2 的成果分離前往負整數、0或正整數。該前往值是 str1 和 str2 由前向後逐字符比擬時碰到的第一個不相等字符處的字符的差值
char str1[] = "Unity"; char str2[] = "iPhone"; printf("%d\n", strcmp(str1, str2));
輸入成果:
-20
指針拜訪數組#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
數組下標與指針關系很親密。履行語句 pa = &a[0] 後,pa 和 a 就具有雷同的值了,而且 *pa=a[0]。現實上C說話在盤算數組下標時也是應用指針來完成的。下標與指針實際上是等價的。
當把一個數組名傳遞給一個函數的時刻,現實上傳遞的是該數組的第一個元素的地址。所以,數組名參數必需是一個指針。
盤算字符串長度的法式可以寫成以下:
int strlen(char *s) { int n; for(n = 0; *s != '\0'; s++) n++; return n; }
s 是指針,也就是一個變量,對它停止自增是正當的。