C语言学习之一维字符数组&二维字符数组

  • 定义一维字符数组并初始化
//一维字符数组:每个元素都是字符类型(char)
//格式: char 字符数组名[元素的个数]
/*
字符数组和字符串的关系:
1.每个元素都是一个字符;
2.字符串本质上也是一个一个的字符的组成的,在结尾处有一个字符'\0';
3.可以使用字符数组存储一个字符串;
*/
//1.使用单个字符的方式对字符数组进行初始化,类比整型数组的初始化
char c[5] = {'J','Y','&','B','J'};
//访问字符数组时,只能采用单个元素访问字符数组里面的每个元素,并且不能使用%s当成一个字符串进行输出
for(int i = 0; i < 5; i++){

     putchar(c[i]);
}
putchar('\n');
//2.可以使用字符的ASCII值对字符数组进行初始化
char c1[5] = {'65','97','48','49','50'};
for(int i = 0; i < 5; i++){

    printf("%c ", c1[i]);
}
putchar('\n');
//3.使用字符数组存储一个字符串时,在结尾处赋值一个'/0'时,就可以使用%s打印字符串存储的字符串
char c2[6] = {'L','O','V','E','\0'};
printf("c2 = %s\n",c2);
//4.未初始化的元素默认初始化为0,另外,'\0'的ASCII值为0
char c3[5] = {'L','O','V','E'};
printf("c3 = %s\n",c3);
//5.使用字符串对字符数组进行初始化,字符数组的长度 >= 字符串长度+1
char c4[5] = "LOVE";
printf("c4 = %s\n",c4);
//6.不指定字符数组的长度时,字符数组的长度 = 字符个数 + 1('\0')
char c5[] = "hibeijing";//长度为10
//7.先定义字符数组,再进行初始化
char c5[10];
//定义字符数组后,再对字符数组进行赋值时,只能使用strcpy函数
strcpy(c5,"hibeijing");
printf("c5 = %s\n",c5);
  • 定义二维字符数组并初始化
//格式:char 二维字符数组名[行数][列数]
/*
二维整型数组和二维字符数组的区别:
1.二维整型数组,每个元素都是一个整型的值;
2.二维字符数组,每个元素都是一个字符;
3.可以使用二维字符数组存储多个字符串,二维字符数组的每行存储一个字符串;
*/
//1.定义二维字符数组,存储字符,每个元素存储一个字符,由于每行的结尾没有'\0'
//所以不可以使用%s整行进行字符串的打印
char c_c[2][5] = {{'h','e','n','a','n'},{'j','y','&','b','j'}};
for(int i = 0; i < 2; i++){

    for(int j = 0; j < 5; j++){
       
       printf("%c",c_c[i][j]);
    }
    putchar('\n');
}
//2.每行的最后的元素初始化'\0',就可以使用%s按照字符串输出每行的字符
char c_c1[2][6] = {{'h','e','n','a','n','\0'},{'j','y','&','b','j'}};
printf("%s",c_c1[0]);//二维数组名[行号]:表示行的首地址
printf("%s",c_c1[1]);
//用for循环输出
for(int i = 0; i < 2; i++){

    printf("%s",c_c1[i]);
}
//3.使用字符串的方式对二维字符数组的每行进行赋值
char c_c2[5][10] = {"xiang","ni","de","ye","li"};
for(int i = 0; i < 5; i++){

    printf("%s",c_c2[i]);
}
//4.先定义二维字符数组,再进行初始化,需要使用strcpy函数
char c_c3[5][10];
strcpy(char c_c3[0],"xiang");
strcpy(char c_c3[1],"ni");
strcpy(char c_c3[2],"de");
strcpy(char c_c3[3],"ye");
strcpy(char c_c3[4],"li");
for(int i = 0; i < 5; i++){

    printf("%s",c_c3[i]);
}

你可能感兴趣的:(c语言,学习,算法)