c语言字符数组不写,C语言数组
數組的基本使用
數組的定義格式:
類型 數組名[元素個數];
int ages[5] = {19, 29, 28, 27, 26};
數組的注意事項
存儲空間的劃分(內存的分配是從高地址到低地址進行的,但一個數組內部元素又是從低到高進行的)
數組名的作用,查看元素地址
數組越界的注意
使用注意
正確寫法
> int ages[5] = {10 , 11, 12, 67, 56};
> int ages[5] = {10, 11};
> int ages[5] = {[3] = 10, [4] = 11};
> int ages[] = {10, 11, 14};
> int ages['A'-50] = {10, 11, 12, 14, 16};
> /*
int count = 5;
int ages[count];
ages[0] = 10;
ages[1] = 11;
ages[2] = 18;
*/
錯誤寫法
//第一種情況~沒有初始化數組個數,并不知道需要分配多少內存空間
int ages[];
//第二種情況只能在定義數組的同時進行初始化
int ages[5];
ages = {10, 11, 12, 14};
//第三種情況 如果想再定義數組的同時進行初始化,數組元素個數必須是常量,或者不寫
int count = 5;
int ages[count] = {10, 11, 12};
計算數組元素的個數
int count = sizeof(ages)/sizeof(int);
數組和函數
// 數組作為函數參數,可以省略元素個數
// 數組作為函數參數,傳遞是整個數組的地址,修改函數形參數組元素的值,會影響到外面的實參數組
void change(int array[])
{
array[0] = 100;
}
//基本數據作為函數參數是值傳遞
void change2(int n)
{
n = 100;
}
int main()
{
int ages[6] = {10, 11, 10, 11, 10, 11};
change(ages);
change2(ages[0]);
return 0;
}
獲取數組中的最大值
int maxOfArray(int array[], int length)
{
// 數組當做函數參數傳遞時,會當做指針變量來使用,指針變量在64bit編譯器環境下,占據8個字節
//int size = sizeof(array);
//printf("array=%d\n", size); 得到的是8
// 1.定義一個變量存儲最大值(默認就是首元素)
int max = array[0];
// 2.遍歷所有元素,找出最大值
for (int i = 1; i
{
// 如果當前元素大于max,就用當前元素覆蓋max
if (array[i] > max)
{
max = array[i];
}
}
return max;
}
二維數組
什么是二維數組?
一個數組能表示一個班人的年齡,如果想表示很多班呢?
int ages[3][10]; 三個班,每個班10個人
相當于3行10列
相當于裝著3個一維數組
二維數組是一個特殊的一維數組:它的元素是一維數組。例如int a[2][3]可以看作由一維數組a[0]和一維數組a[1]組成,這兩個一維數組都包含了3個int類型的元素
int main()
{
/*
1 淺藍色
2 深藍色
3 黃色
4 紅色
-1 沒有
*/
int cubes[5][5] = {
{1, -1, -1, -1, -1},
{1, 1, -1, 2, -1},
{4, 1, 2, 2, 2},
{4, 3, 3, 3, 3},
{4, 3, 3, 3, 3}
};
return 0;
}
字符串
char name[] = "jackChan";
char name2[8] = {'i', 't', '\0'};
字符串是以 \0為標志的
/*
\0的作用
1.字符串結束的標記
2.printf("%s", name2);
會從name2這個地址開始輸出字符,直到遇到\0為止
因為name2只是普通的字符數組,(沒有指定分配多少內存空間,就會以字符的個數進行分配存儲空間,由于不包含\0,所以是一個普通的字符數組,而printf中%s是字符串,所以會先找到name2的內存地址,"注意:分配內存的時候尋址是先大后小,所以name[]的內存地址比name2的內存地址大",沒有\0,會繼續向下找到name[]中,直到遇到\0才結束)
*/
int main()
{
char name[] = "itc\0ast";
char name2[] = {'o', 'k'};
printf("%s\n", name2); //輸出的結果是okitc
// printf("%s\n", &name2[1]);
return 0;
}
strlen函數
/*
strlen 函數:計算字符串的長度
1 計算的是字符數,并不是字數,一個漢字算作3個字符
2 計算的字符不包含\0
3 從某個地址開始數 字符的個數,直到遇到\0為止
4 strlen 函數聲明在string.h中
*/
#include
#include
int main()
{
int size = strlen("哈haha");
printf("%d\n", size);
char name[] = "jack";
printf("%s\n", name); // jack
printf("%c\n", name[3]); // k
return 0;
}
字符串數組
#include
int main()
{
char name[] = "jack";
char name1[] = "rose";
char name2[] = "jim";
char name3[] = "jake";
char names[2][10]= {"jack", "rose"};
//printf("%s\n", names[0]);
//printf("%c\n", names[0][3]);
char names2[2][10] =
{
{'j', 'a', 'c', 'k', '\0'},
{'r', 'o', 's', 't', '\0'}
};
return 0;
}
總結
以上是生活随笔為你收集整理的c语言字符数组不写,C语言数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ImportError: cannot
- 下一篇: 安卓系统挂载NTFS格式硬盘_苹果电脑挥