栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言学习笔记4---数组、字符串、结构体

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言学习笔记4---数组、字符串、结构体

文章目录

数组

一维数组二维数组 字符串

字符串的初始化字符串的输出字符串操作函数【注:待补充】 结构体

结构体的声明 参考文献

数组

数组用于存储一系列具有相同数据类型的变量。数组内的元素具有连续的内存位置。

一维数组

一维数组的声明

声明一个数组时,必须要指明数组的数据类型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两种初始化方式中,中括号内的内容都可省略。

字符串的输出
    使用索引遍历输出
#include 
int 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名 结构体内变量(该变量也可在函数处使用该结构体时再引入)。如

#include 
 
struct 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;

【代码示例】输出所构建结构体内变量的具体内容。

#include 
 
struct 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|菜鸟教程。链接

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/779577.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号