结构体数组和结构体指针

简介: 一、结构体嵌套二、结构体数组三、初始化结构体数组四、结构体指针

结构体数组和结构体指针

 

目录:

一、结构体嵌套

二、结构体数组

三、初始化结构体数组

四、结构体指针

 

一、 结构体嵌套

 

struct Date

{

int year;

int month;

int day;

};

 

例子

#include <stdio . h>

struct Date
{
int year;

int month;hio

int day;
};
struct Book
{
char title[128];

char author[40];

float price ;
struct Date date;
char publisher[40];
}book = {
“《带你学C带你飞》

"小甲鱼 ",
48.8,
{2017, 11, 11},

“清华大学出版社“

}

int main(void)

{

printf(“书名:%s\n”,book.title);

printf(“作者:%s\n”,book.anther);

printf(“售价:%.2f\n”,book.price);

printf(“出版日期:

%d-%d-%d\n”,book.date.year,book.date.month,book.date.day);

printf(“出版社:%s\n”,book.publisher);

return 0;

}

书名:《带你学C带你飞》

作者:小甲鱼

售价:48.80

出版日期:2017-11-11

出版社:清华大学出版社

 

二、 结构体数组


结构体数组跟之前数组概念大致是相似的, 每个数组的元素不再是简单的基础类型,而是结构体类型数据,所以每个结构体数组元素都包含该结构体所有成员。


  • 第一种方法是在声明结构体的时候进行定义:

strut 结构体名称

{

结构体成员;

}数组名 [长度]


  • 第二种方法是先声明一个结构体类型(比如上面Book),再用此类型定义一个结构体数组:

struct 结构体名称

{

结构体成员;

}

struct 结构体名称 数组名[长度]

 

三、 初始化结构体数组


结构体数组定义的同时,同样可以进行初始化,例如:

struct Book book[3] = {
{"
《零基础入门学习Python”,“小甲鱼"49.5,
{2016
1111},“清华大学出版社"},
{"
《零基础入门学习Scratch""不二如是"49.9,
{2017, 10,1}, "
清华大学出版社"},
{"
《带你学C带你飞》""小甲鱼"49.9{2017, 11,
11},
“清华大学出版社"}

}

 

四、结构体指针


通过结构体指针访问结构体成员有两种方式:(*结构体指针).成员名

结构体指针->成员名

检引用和指针的方式下运行结构正常均正常

 

检引用的形式:

int main(void)

{

struct Book *pt;

pt = &book;

printf("书名:%s\n",(*pt).title);

printf("作者:%s\n"(*pt).author);

printf("售价:%.2f\n",(*pt ).price) ;

printf("出版日期∶%d-%d-%d \n"(*pt).date.year(*pt).date.month,(*pt).date.day ) ;

printf(""出版社: %s \n",(*pt ).publisher) ;

return 0;

 

运行结果:

书名:《带你学c带你飞》

作者:小甲鱼

售价:48.80

出版日期:2017-11-11

出版社︰清华大学出版社

[fishc@bogon sle43]$

 

指针的形式:

int main(void)

{

struct Book *pt;

pt = &book;

printf("书名:%s\n",(*pt).title);

printf("作者:%s\n"(*pt).author);

printf("售价:%.2f\n",(*pt ).price) ;

printf("出版日期∶%d-%d-%d \n"(*pt).date.year(*pt).date.month,(*pt).date.day ) ;

printf(""出版社: %s \n",(*pt ).publisher) ;

return 0;

7 substitutions on 5 lines

运行结果:

书名:《带你学c带你飞》

作者:小甲鱼

售价:48.80

出版日期:2017-11-11

出版社︰清华大学出版社

[fishc@bogon sle43]$

相关文章
|
1月前
|
C语言
指向结构体数组的指针
指向结构体数组的指针
13 2
|
1月前
|
存储 算法 C语言
通过指针引用数组元素
通过指针引用数组元素
20 0
|
1月前
|
C语言 C++
数组元素的指针
数组元素的指针
10 0
|
1月前
|
存储 C++
使用字符指针变量和字符数组的比较
使用字符指针变量和字符数组的比较
10 0
|
1月前
|
存储 C语言 C++
c语言从入门到实战——数组指针与函数指针
数组指针和函数指针都是指针类型,但是它们指向不同的数据类型。 数组指针:数组指针指向的是数组类型。 函数指针:函数指针指向的是函数类型。 数组指针和函数指针是C语言中的两种重要指针类型。数组指针指向一个数组,可以用来访问和修改数组中的元素;而函数指针则指向一个函数,可以用来调用该函数。两者在语法和用法上有所不同,需要仔细区分。正确理解和使用它们可以提高程序的效率和可维护性。
33 0
|
1天前
|
存储 人工智能 C++
【重学C++】【指针】详解让人迷茫的指针数组和数组指针
【重学C++】【指针】详解让人迷茫的指针数组和数组指针
15 1
|
1天前
|
存储 C语言
指针数组作为main函数的形参
指针数组作为main函数的形参
10 0
|
30天前
|
存储 程序员 C++
指针数组和多重指针
指针数组和多重指针
17 2
|
30天前
|
存储 程序员 C++
使用字符指针变量和字符数组的比较
使用字符指针变量和字符数组的比较
14 1
|
30天前
|
存储 安全 Java
防止数组元素的指针被修改
防止数组元素的指针被修改
14 1