数组
一维数组二维数组 字符串
字符串的初始化字符串的输出字符串操作函数【注:待补充】 结构体
结构体的声明 参考文献
数组数组用于存储一系列具有相同数据类型的变量。数组内的元素具有连续的内存位置。
一维数组一维数组的声明
声明一个数组时,必须要指明数组的数据类型type, 数组的长度。长度需为大于0的整数, 数组的长度用中括号包裹。
代码语法为:
type 数组名[数组的长度,即元素个数];
一维数组的初始化
初始化一维数组,若需初始化的数组已事先声明过,则直接将用大括号包裹的数组元素赋值给该数组。若事先并未声明,则在初始化是需要指明数组的数据类型。
代码语法为:
type 数组名[数组长度] = {元素1, 元素2, 元素3,…元素n};
【注】 初始化时数组的长度并不是必须要写的,若中括号内不写数组长度,则默认数组的长度即为元素的个数。若中括号内写了数组长度, 则后面大括号中的元素个数不可超过中括号中所写的数组长度。
一维数组的索引
索引值从0即基索引至数组长度减1。数组中的元素可以通过数组名与索引值来访问。
【代码实例】
#include二维数组int main () { int n[ 10 ]; int i,j; for ( i = 0; i < 10; i++ ) { n[ i ] = i + 100; } for (j = 0; j < 10; j++ ) { printf("Element[%d] = %dn", j, n[j] ); } return 0; }
多维数组的声明同一维数组一样也需要指明数据类型,每一个维度上的长度也需要用中括号来包裹说明。是几维数组就需要几个中括号。代码语法为:
type 多维数组名[size1][size2][size3]…[size n];
多维数组中最简单的形式是二维数组,本质上是一个元素为一维数组的列表。其声明与初始化规则同一维数组,代码语法分别为:
type 数组名[行数][列数];
type 数组名[行数][列数] = {{第一行的一维数组元素},{第二行的一维数组元素},…{第n行的一维数组元素}};
二维数组的索引也需要从两个维度来看,行列索引分别都是从基索引0至行数减1与列数减1.
【代码实例】
#include字符串int main () { int a[5][2] = { {0,0}, {1,2}, {2,4}, {3,6},{4,8}}; int i, j; for ( i = 0; i < 5; i++ ) { for ( j = 0; j < 2; j++ ) { printf("a[%d][%d] = %dn", i,j, a[i][j] ); } } return 0; }
在C语言中,字符串实际上是使用空字符 结尾的一维字符数组。 是用于标记字符串的结束。
字符串的初始化- 使用数组形式,应用大括号进行初始化。
char 字符串名[字符的个数+1]={'英文字符1','英文字符2',...,'英文字符n',' '};
例: char logo[9] = {‘h’,‘h’,‘x’,‘x’,‘t’,‘t’,‘x’,‘s’,’ ’};
- 直接使用双引号来初始化。
char 字符串名[字符的个数+1]="字符串的内容";
例: char logo[] = “hhxxttxs”;
【注】:1,2两种初始化方式中,中括号内的内容都可省略。
字符串的输出- 使用索引遍历输出
#includeint main(){ char list[] = {'h','h','x','x','t','t','x','s',' '}; for(int i = 0; i < 9;i++){ printf("%c ", list[i]); } return 0; }
- 直接整串输出
#include字符串操作函数【注:待补充】int main(){ char list[] = {'h','h','x','x','t','t','x','s',' '}; printf("%s",list); return 0; }
| 函数名 | 作用 | 备注 |
| strcpy(字符串1,字符串2) | 复制字符串2到字符串1 | 返回的结果为字符串2的内容将字符串1的内容覆盖 |
| strcat(字符串1,字符串2) | 将字符串2连接到字符串1的尾端 | 返回的结果为字符串2的内容将字符串1的内容覆盖 |
| strlen(字符串) | 计算字符串的长度 | 返回的结果为字符串2的内容将字符串1的内容覆盖 |
| strcmp(字符串1,字符串2,要比较字符串的长度(可选)) | 判断字符串1与字符串2是否相同 | strcmp是C语言比较字符串的库函数,形式为 int strcmp(char *a, char *b) strcmp(*a, *b)。该函数会对a和b的每个字符,按照ASCII 码值比较,如果二者完全相同返回0;如果字符串a的ASCII码值首先出现较大者,会返回1,否则返回-1; |
| strchr(字符串,ch) | 返回一个指针,指向字符串中字符ch第一次出现的位置 | 返回的结果为字符串2的内容将字符串1的内容覆盖 |
| strstr(字符串1,字符串2) | 返回一个指针,指向字符串1中字符串2第一次出现的位置 | 返回的结果为字符串2的内容将字符串1的内容覆盖 |
【代码演示】
#include结构体#include int main(void){ char str_1[] = "abc"; char str_2[] = "ABC"; if(strcmp(str_1,str_2)==0){ printf("str_1 is equal to str_2n"); } return 0; }
数组是存储相同类型数据项的变量。结构体是C程序中用户自定义的可用的数据类型,它允许存储不同类型的数据项。为了定义结构,必须使用struct语句。一个struct语句定义了一个包含多个成员的新的数据类型。struct语句的格式如下:
struct tag{
成员1;
成员2;
.
.
.
成员n;
}结构体变量名;
tag为结构体的标签。【注:标签的意义没搞明白】结构体变量名定义在结构的末尾,最后一个分号前,可以指定多个变量名,变量名也可以不指定。一般情况下,结构体标签,成员,结构体变量名这三部分至少要出现两个。
结构体是一种自定义的数据类型,是创建变量的模板,不占用内存空间;结构体内的变量才包含了实实在在的数据,需要内存空间来存储。
结构体的声明1. struct tag{
具体的数据类别;
}变量名;
这里的变量名可有可无。引用时前面必须要写关键词struct,写为下列形式:
struct tag名 结构体内变量(该变量也可在函数处使用该结构体时再引入)。如
#includestruct Books { char title[50]; char author[50]; char subject[100]; int book_id; }; struct Books { char title[50]; char author[50]; char subject[100]; int book_id; }book; struct Books { char title[50]; char author[50]; char subject[100]; int book_id; }book = {"C 语言", "RUNOOB", "编程语言", 123456};
引用举例:
- 将结构体内成员的具体变量写成一个数字的形式。
struct Books book = {"C 语言", "RUNOOB", "编程语言", 123456};
或者
2. 将具体的内容拷贝到结构体声明的成员变量中
struct Books book; strcpy(book.title,"C 语言"); strcpy(book.author,"RUNOOB"); strcpy(book.subject,"编程语言"); book.book_id = 123456;
【代码示例】输出所构建结构体内变量的具体内容。
#includestruct Books { char title[50]; char author[50]; char subject[100]; int book_id; }; int main() { struct Books book={"C 语言", "RUNOOB", "编程语言", 123456}; printf("title : %snauthor: %snsubject: %snbook_id: %dn", book.title, book.author, book.subject, book.book_id); } #include struct Books { char title[50]; char author[50]; char subject[100]; int book_id; }; int main() { struct Books book; strcpy(book.title,"C 语言"); strcpy(book.author,"RUNOOB"); strcpy(book.subject,"编程语言"); book.book_id = 123456; printf("title : %snauthor: %snsubject: %snbook_id: %dn", book.title, book.author, book.subject, book.book_id); }
- 使用typedef来创建声明.
typedef struct tag{
具体的变量;
}变量名
举例:
typedef struct
{
char title[50];
char author[50];
char subject[100];
int book_id;
} Book;
此处tag可有可无。引用时不需要写struct,但需要设定一次引用变量名。
【引用举例】
Book book = {"C 语言", "RUNOOB", "编程语言", 123456};
或者
book book; strcpy( book.title, "C 教程"); strcpy( book.author, "Runoob"); strcpy( book.subject, "编程语言"); book.book_id = 12345;
【代码示例】
#include参考文献#include typedef struct { char title[50]; char author[50]; char subject[100]; int book_id; } Book; int main( ) { //Book book = {"C 语言", "RUNOOB", "编程语言", 123456};第一种引用方式 Book book;//第二种引用方式 strcpy( book.title, "C 教程"); strcpy( book.author, "Runoob"); strcpy( book.subject, "编程语言"); book.book_id = 12345; printf("title : %snauthor: %snsubject: %snbook_id: %dn", book.title, book.author, book.subject, book.book_id); return 0; }
C|菜鸟教程。链接



