c语言字符数组不写,C语言数组
數(shù)組的基本使用
數(shù)組的定義格式:
類型 數(shù)組名[元素個(gè)數(shù)];
int ages[5] = {19, 29, 28, 27, 26};
數(shù)組的注意事項(xiàng)
存儲(chǔ)空間的劃分(內(nèi)存的分配是從高地址到低地址進(jìn)行的,但一個(gè)數(shù)組內(nèi)部元素又是從低到高進(jìn)行的)
數(shù)組名的作用,查看元素地址
數(shù)組越界的注意
使用注意
正確寫法
> 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;
*/
錯(cuò)誤寫法
//第一種情況~沒有初始化數(shù)組個(gè)數(shù),并不知道需要分配多少內(nèi)存空間
int ages[];
//第二種情況只能在定義數(shù)組的同時(shí)進(jìn)行初始化
int ages[5];
ages = {10, 11, 12, 14};
//第三種情況 如果想再定義數(shù)組的同時(shí)進(jìn)行初始化,數(shù)組元素個(gè)數(shù)必須是常量,或者不寫
int count = 5;
int ages[count] = {10, 11, 12};
計(jì)算數(shù)組元素的個(gè)數(shù)
int count = sizeof(ages)/sizeof(int);
數(shù)組和函數(shù)
// 數(shù)組作為函數(shù)參數(shù),可以省略元素個(gè)數(shù)
// 數(shù)組作為函數(shù)參數(shù),傳遞是整個(gè)數(shù)組的地址,修改函數(shù)形參數(shù)組元素的值,會(huì)影響到外面的實(shí)參數(shù)組
void change(int array[])
{
array[0] = 100;
}
//基本數(shù)據(jù)作為函數(shù)參數(shù)是值傳遞
void change2(int n)
{
n = 100;
}
int main()
{
int ages[6] = {10, 11, 10, 11, 10, 11};
change(ages);
change2(ages[0]);
return 0;
}
獲取數(shù)組中的最大值
int maxOfArray(int array[], int length)
{
// 數(shù)組當(dāng)做函數(shù)參數(shù)傳遞時(shí),會(huì)當(dāng)做指針變量來使用,指針變量在64bit編譯器環(huán)境下,占據(jù)8個(gè)字節(jié)
//int size = sizeof(array);
//printf("array=%d\n", size); 得到的是8
// 1.定義一個(gè)變量存儲(chǔ)最大值(默認(rèn)就是首元素)
int max = array[0];
// 2.遍歷所有元素,找出最大值
for (int i = 1; i
{
// 如果當(dāng)前元素大于max,就用當(dāng)前元素覆蓋max
if (array[i] > max)
{
max = array[i];
}
}
return max;
}
二維數(shù)組
什么是二維數(shù)組?
一個(gè)數(shù)組能表示一個(gè)班人的年齡,如果想表示很多班呢?
int ages[3][10]; 三個(gè)班,每個(gè)班10個(gè)人
相當(dāng)于3行10列
相當(dāng)于裝著3個(gè)一維數(shù)組
二維數(shù)組是一個(gè)特殊的一維數(shù)組:它的元素是一維數(shù)組。例如int a[2][3]可以看作由一維數(shù)組a[0]和一維數(shù)組a[1]組成,這兩個(gè)一維數(shù)組都包含了3個(gè)int類型的元素
int main()
{
/*
1 淺藍(lán)色
2 深藍(lán)色
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為標(biāo)志的
/*
\0的作用
1.字符串結(jié)束的標(biāo)記
2.printf("%s", name2);
會(huì)從name2這個(gè)地址開始輸出字符,直到遇到\0為止
因?yàn)閚ame2只是普通的字符數(shù)組,(沒有指定分配多少內(nèi)存空間,就會(huì)以字符的個(gè)數(shù)進(jìn)行分配存儲(chǔ)空間,由于不包含\0,所以是一個(gè)普通的字符數(shù)組,而printf中%s是字符串,所以會(huì)先找到name2的內(nèi)存地址,"注意:分配內(nèi)存的時(shí)候?qū)ぶ肥窍却蠛笮?所以name[]的內(nèi)存地址比name2的內(nèi)存地址大",沒有\(zhòng)0,會(huì)繼續(xù)向下找到name[]中,直到遇到\0才結(jié)束)
*/
int main()
{
char name[] = "itc\0ast";
char name2[] = {'o', 'k'};
printf("%s\n", name2); //輸出的結(jié)果是okitc
// printf("%s\n", &name2[1]);
return 0;
}
strlen函數(shù)
/*
strlen 函數(shù):計(jì)算字符串的長(zhǎng)度
1 計(jì)算的是字符數(shù),并不是字?jǐn)?shù),一個(gè)漢字算作3個(gè)字符
2 計(jì)算的字符不包含\0
3 從某個(gè)地址開始數(shù) 字符的個(gè)數(shù),直到遇到\0為止
4 strlen 函數(shù)聲明在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;
}
字符串?dāng)?shù)組
#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;
}
總結(jié)
以上是生活随笔為你收集整理的c语言字符数组不写,C语言数组的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ImportError: cannot
- 下一篇: ireport参数传递json_Json