typedef-C++引用

本文介绍了C++中typedef的关键用法,如何通过typedef创建类型别名,以及C++的引用概念。通过实例展示了如何在主函数中定义指针和使用子函数修改变量值。同时涵盖了逻辑结构与存储结构的概念,以及算法的基本特性。
摘要由CSDN通过智能技术生成

为什么要用typedef

typedef的作用就是起别名

关键字typedef的使用

#include<stdio.h>

typedef struct student {
	int num;
	char name[20];
	char sex;
}stu, * pstu;//stu=struct student,用于定义结构体变量;pstu=struct student*,用于定义结构体指针变量

typedef int INTEGER;//对int起别名,为了代码即注释

int main() {
	//定义结构体变量并初始化
	stu s = { 2019,"shuaishuai",'m' };
	//定义结构体指针变量
	pstu p;//pstu=struct student*
	p = &s;//对结构体s取地址,赋值给p
	INTEGER i = 10;//等于int i0;
	printf("%d %d %s %c", i, p->num, p->name, p->sex);
	return 0;
}

C++的引用

用于在子函数修改主函数的值,使用比较方便。

//C++引用
#include<stdio.h>

void modifynum(int& a) {
	//把&写到形参的位置是C++的语法,称为引用。
	//在子函数操作a和在主函数操作a是等价的。
	a = a / 2;
}
void modifypointer(int*& p) {
	//在子函数中操作一级指针和在主函数中操作是一样的
	p = (int*)malloc(20);//p指向20个字节的空间
	p[0] = 6;
}

int main() {
	int a = 10;
	modifynum(a);//调用modifynum函数
	printf("%d", a);
	modifypointer(p);
	return 0;
}
//C语言实现在子函数中操作主函数中某一变量的值
#include<stdio.h>

void modifynum(int* a) {
	//a为指针变量,存放的是地址,*a表示对a取值
	(*a) = (*a) / 2;
}
void modifypointer(int** p) {
	**p += 2;//二级指针
}

int main() {
	int a = 10;
	modifynum(&a);//调用modifynum函数
	printf("%d", a);
	modifypointer(&p);
	return 0;
}

作业:在主函数定义字符指针 char *p,然后在子函数内malloc申请空间,通过fgets读取字符串,然后在主函数中进行输出;要求子函数使用C++的引用,注意在C++中从标准输入读取字符串,需要使用fgets(p,100,stdin)。

#include<stdio.h>
#include<stdlib.h>

void red(char*& p) {
	p = (char*)malloc(100);//申请100个字节的空间
	fgets(p, 100, stdin);//标准读入
}
int main() {
	char* p = NULL;//定义指针变量
	red(p);//调用子函数
	puts(p);//输出读取的内容
	return 0;
}

逻辑结构与存储结构

逻辑结构: 数据元素之间的逻辑关系—抽象的。包括集合结构(无关系)、线性结构(一对一)、树形结构(一对多)、图形结构(多对多)。对人友好。
优点:1.可以实现随机存储。2.每个元素占用最少的空间。缺点:只能使用整块的存储单元,会产生较多的碎片。
存储结构: 数据结构在计算机中的表示—具体的。包括顺序存储(数组)、链式存储、索引存储、散列存储。对计算机友好。
优点:充分利用所有的存储单元,不会出现碎片现象。缺点:1.需要额外的存储空间来存放下一结点的指针。2.只能实现顺序存取。

算法

定义:对特定问题求解步骤的描述
特性:有穷、确定、可行、输入、输出
时间复杂度:指算法中所有语句的频度(执行次数)之和。

空间复杂度:指算法在运行过程中所使用的辅助空间的大小。
算法原地工作是指算法所需的辅助空间是常量,即O(1)。

typedef c是一个无效的语法。在给变量或类型起别名时,需要使用typedef关键字,然后在定义之前加上别名。例子中的typedef语句是给现有的类型起别名,而不是定义变量。所以如果想要定义变量c,需要在之前定义的类型前加上typedef关键字,并将变量名a替换成类型名A,然后再进行定义。123 #### 引用[.reference_title] - *1* [c/c++typedef详解](https://blog.csdn.net/lwbeyond/article/details/6191942)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *2* [C语言中的复杂声明和定义,以及如何使用typedef进行简化](https://blog.csdn.net/skywalker_leo/article/details/48622193)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *3* [C/C++ typedef用法详解](https://blog.csdn.net/a472725641/article/details/52869645)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值