【C++-----函数,指针,结构体】

news/2024/11/15 5:53:34/

C++-----函数,指针,结构体

  • 一 、函数:
    • 1.1函数调用:
    • 1.2函数常见样式:
    • 1.3函数的声明:
    • 1.4函数分文件编写 :
  • 二 、指针:
    • 2.1 空指针:NULL
    • 2.2野指针:
    • 2.3 const修饰指针:
      • (1) const修饰指针:常量指针
      • (2 )const修饰常量:指针常量
      • (3) const既修饰指针,又修饰常量
    • 2.4 指针和数组的关联:利用指针访问数组中的元素
    • 2.5 指针和函数:址传递
  • 三 、结构体:
    • 3.1 结构体的定义和使用:
    • 3.2 创建结构体变量的三种方式:
    • 3.3 结构体数组:
    • 3.4结构体指针:
    • 3.5 结构体嵌套结构体:
    • 3.6结构体作为函数参数:
    • 3.7 结构体中的const:

一 、函数:

1.1函数调用:

(1)值传递(函数对形参值的修改不会实际改变实参 )

(2)址传递

1.2函数常见样式:

1 无参无返

2 有参无反

3 无参有反

4 有参有反

1.3函数的声明:

作用:定义使用前告诉编译器

两种声明方式:

(1 )其他函数写在主函数前面:不用进行声明,相当于已经声明

(2) 其他函数写在主函数后面:需要在主函数前进行声明

1.4函数分文件编写 :

作用:使代码结构更清晰

分文件步骤:

步骤1:创建头文件和源文件

(1)创建后缀名.h的头文件(在头文件文件夹中创建)

(2)创建源文件

步骤二:
头文件中写各种函数的声明,以及主函数需要用到的头文件

步骤三:
源文件中写函数的定义,并将头文件中包含进来

二 、指针:

2.1 空指针:NULL

指向的内存编号为0

作用:初始化指针变量

注意:空指针指向的内存不允许访问,原因是0-255之间的内存编号已经被内存占用

2.2野指针:

指针指向的内存位置非法(没有申请的地址),程序中要避免出现野指针

2.3 const修饰指针:

(1) const修饰指针:常量指针

(表示指向的内存空间中的值不能够被修改)

int a=10;

const int *p=&a;//const后面是星号p,限定的值

定义的指针变量前面加const:

特点是指针指向的值不可以修改,指针的指向可以修改

(2 )const修饰常量:指针常量

int a=10;

int *const p=&a;//const后面是指针变量p,不能修改指针的指向

特点:指针的指向不可以修改,指针指向的值可以修改

(3) const既修饰指针,又修饰常量

const int * const p=&a;

特点:指针的指向和指针指向的值都不可以修改。

记忆方法:const翻译为常量,看位置记忆

2.4 指针和数组的关联:利用指针访问数组中的元素

数组名是数组的首地址

和C语言中一样:指针变量++就是跳过指针类型对应数据所占的字节数,访问数组中的下一个元素

2.5 指针和函数:址传递

值传递是赋值进行操作,与实参脱离,不能对实参进行修改

指针作为函数参数,可以对实参进行更改

三 、结构体:

是一种自定义的数据类型,是一些基本数据类型的集合

通过这种数据结构也能创建变量

3.1 结构体的定义和使用:

struct 结构体名

{

成员变量列表;

};

结构体的创建一般在主函数外边

3.2 创建结构体变量的三种方式:

结构体类型变量的数据类型组成:struct 结构体名

(1)struct 结构体名 变量名;//只创建,不进行初始化

(2)struct 结构体名 变量名={ };//创建并对成员成员变量进行初始化

(3)定义结构体的同时进行变量的创建

结构体变量成员变量的操作用.操作符

3.3 结构体数组:

作用:将结构体变量存放到数组中,方便对数据进行维护

创建语法:和普通数组创建方式类似

struct 结构体名 数组名[ 元素个数]={ { },{ },{ }}

3.4结构体指针:

作用:通过结构体类型的指针访问结构体变量中的成员变量

通过->操作符

3.5 结构体嵌套结构体:

其中一个结构体为另一结构体的成员

struct student
{string name;//学上姓名int age;//学生年龄int score;//考试分数
};
struct Student
{int id;//教师编号string name;//教师姓名struct student s1;//教师的学生s1
};

使用结构体变量中的结构体变量中的变量:需要使用多个.操作符(多层访问)

3.6结构体作为函数参数:

作用:将结构体变量作为参数向函数中传递

传递方式:

(1)值传递

(2)址传递

struct student
{string name;//学上姓名int age;//学生年龄int score;//考试分数
};//打印学生信息函数
//(1)值传递
void printstudent(struct student stu)
{cout << "函数中打印:姓名:" << stu.name << "年龄:" << stu.age << "分数:" << stu.score << endl;
}
//(2)址传递,用结构体类型的指针来结构结构体变量的地址
void printstudent(struct student *pstu)
{cout << "main函数中打印:姓名:" << pstu->name << "年龄:" << pstu->age << "分数:" << pstu->score << endl;
}int main()
{//将某一学生作为实参传入,打印学生身上所有信息struct student s1;s1.name = "张三";s1.score = 100;s1.age =18;//cout << "main函数中打印:姓名:" << s1.name << "年龄:" << s1.age << "分数:" << s1.score << endl;printstudent(s1);printstudent(&s1);system("pause");return 0;
}

3.7 结构体中的const:

作用:防止对数据误操作

使用背景:
结构体变量中的数据可能很多,在进行创建结构体变量过多/操作的时候,数据量过于庞大,对内存的需求太大

因此进行函数传址的方式每次只需要4个字节的内存空间:可以减少内存空间,而且不会复制新的副本:

但是为了防止传址可能会对数据误操作造成修改(隐患),就可以相关函数的参数前面加上const(使传来的结构体变为结构体常量)


http://www.ppmy.cn/news/189188.html

相关文章

05.JavaWeb-Servlet

1.Servlet基础 1.1 Servlet概述 用于处理客户端传来的HTTP请求&#xff0c;并返回一个响应&#xff08;特点&#xff1a;方便、跨平台、灵活性和可扩展性&#xff09; 1.2 Servlet开发入门 1.2.1 Servlet接口及实现类 1.最基本的接口是javax.servlet.Servlet&#xff0c;Ser…

03_Datase和DataLoader 之间的配合

Datase和 DataLoader 之间的配合&#xff0c;用于构建数据集&#xff0c;以及训练过程中&#xff0c;读取数据的过程&#xff1b; 1. Dataset和DataLoader 1.1 各自的作用 Dataset: 定义了数据集的内容&#xff0c;它相当于一个类似列表的数据结构&#xff0c;具有确定的长…

软考A计划-电子商务设计师-专业英语

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

研报精选230424

目录 【行业230424华福证券】功率半导体行业深度报告&#xff1a;能源变革大时代&#xff0c;功率器件大市场 【行业230424华西证券】海外锂资源企业近况总结之锂辉石篇&#xff1a;2023年海外锂资源供应量同比增长45%&#xff0c;H2比H1增加13万吨LCE供应 【行业230424东吴证券…

07年25大IT创新

12月29日消息&#xff0c;据国外媒体报道&#xff0c;PC World日前评出了2007年25大创新<nobr><strong class"kgb" οnmοuseοverisShowAds true;isShowAds2 true;KeyGate_ads.Move(this,"","","-100836","产品"…

谁在使用Qt

关于“谁在使用Qt&#xff0c;那些产品是采用Qt开发的&#xff1f;”这个问题是很多Qt的使用者和学习者所关心的问题&#xff0c;这个问题关系到Qt的应用范围&#xff0c;Qt影响力&#xff0c;Qt的魅力等等。2010 Qt开发者大会茶歇的时候大家咨询过齐亮的一个问题。这个问题也同…

【经典箴言 || 人生感悟 】

人的一生中只有七次机会&#xff0c;平均每七年拥有一次&#xff0c;大概在25岁到75岁&#xff0c;第一次通常抓不到&#xff0c;因为太年轻&#xff0c;最后一次也抓不到&#xff0c;因为太老。中途还有2次因为自己错过&#xff0c;所以抓不到。所以对于人来说人真正才会有三次…

经典箴言和人生感悟

人的一生中只有七次机会&#xff0c;平均每七年拥有一次&#xff0c;大概在25岁到75岁&#xff0c;第一次通常抓不到&#xff0c;因为太年轻&#xff0c;最后一次也抓不到&#xff0c;因为太老。中途还有2次因为自己错过&#xff0c;所以抓不到。所以对于人来说人真正才会有三次…