c++入门

c++入门,第1张

4.7

4.8

1 二维数组及其数组证明,二维数组的几种定义方式,二维数组的数组名表示含义,确定二维数组的行数列数

#include
using namespace std;
int main()
{
	//创建二维数组
	int arr0[2][3];
	int arr[2][3] =
	{
		{1,1,2},
		{2,2,4}
	};
	int arr2[4][2] = { 1,2,3,4,5,6,7,8 };
	int arr3[][2] = { 1,2,3,4,5,6,7,8 };
	//判断二维数组的行数及列数
	int m = sizeof(arr) / sizeof(arr[0]);
	//sizeof(arr)表示数组中所占内存大小;sizeof(arr[0])表示第一行数组所占内存大小
	int n = sizeof(arr[0]) / sizeof(arr[0][0]);
	//sizeof(arr[0][0])表示数组首元素所占内存大小
	//打印二维数组
	cout << "二维数组为:" << endl;
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < n; j++)
		{
			cout << arr[i][j] << " ";
		}
		cout << endl;
	}
	//二维数组的地址
	cout << "二维数组的地址为:" << (int)arr << endl;
	cout << "二维数组的第一行地址为:" << (int)arr[0] << endl;
	cout << "二维数组的首元素地址为:" << (int)&arr[0][0] << endl;//单个元素要加&地址符
	system("pause");
	return 0;
}

2  二维数组案例——成绩统计,给三个人的成绩用二维数组求其总成绩

#include
using namespace std;
int main()
{
	//创建成绩数组
	int arrscore[3][3] =
	{
		{90,90,99},
		{89,87,96},
		{99,79,98}
	};
	//求总成绩
	int m = sizeof(arrscore) / sizeof(arrscore[0]);//求行数
	int n = sizeof(arrscore[0]) / sizeof(arrscore[0][0]);//求列数
	for (int i = 0; i < m; i++)
	{
		int sum = 0;
		for (int j = 0; j < n; j++)
		{
			sum += arrscore[i][j];
		}
		cout << "第" << i+1 << "个人的总成绩为:" << sum << endl;
	}
	system("pause");
	return 0;
}

3 函数 函数的定义与调用;函数的值传递与地址传递;函数的四种样式;函数的命名及份文件编写

函数的定义与调用

#include
using namespace std;
int Add(int a, int b)
{
	int sum = a + b;
	return sum;
}
int main()
{
	//1、定义一个加法函数
	//1.1、函数定义的语法 函数类型 函数名 (形参)
	int m = 98;
	int n = 67;
	//函数的调用,有返回值的函数调用返回值可用一个新的变量接收
	int c=Add(m, n);
	cout << "和为:" << c << endl;
    system("pause");
	return 0;
}

函数的值传递与地址传递,尤其注意函数的值传递与地址传递对函数形参实参的变化

#include
using namespace std;
void Swap1(int a, int b)
{
	int temp = a;
	 a = b;
	 b = temp;
	 cout << "交换后的值传递数据为" << "a= " << a << endl;
	 cout << "交换后的值传递数据为" << "b= " << b << endl;
}
void Swap2(int* p1, int* p2)
{
	int temp = *p1;
	*p1 = *p2;
	*p2 = temp;
	cout << "交换后的地址传递数据为:" << "a= "<<*p1 << endl;
	cout << "交换后的地址传递数据为:" << "b= "<<*p2 << endl;
}

int main()
{
	//1、函数的值传递
    //1.1、创建一个交换函数并调用
	int a = 10;
	int b = 20;
	cout << "交换前的数据为" << "a= " << a << endl;
	cout << "交换前的数据为" << "b= " << b << endl;
	//1.2、进行值传递
	Swap1(a,b);
	cout << "交换后的main函数值传递数据为" << "a= " << a << endl;
	cout << "交换后的main函数值传递数据为" << "b= " << b << endl;
	//1.3、值传递仅改变形参,对实参不发生影响
	//2、函数的地址传递
	//2.1、创建一个交换函数并调用
	Swap2(&a, &b);
	cout << "交换后的main函数地址传递数据为:" << "a= " << a << endl;
	cout << "交换后的main函数地址传递数据为:" << "b= " << b << endl;
	//2.3、地址传递对函数的形参实参都会发生改变
	system("pause");
	return 0;
}

函数的四种样式

#include
using namespace std;
//无参无返函数
void function1()
{
	cout << "this is function1" << endl;
}
//无参有返函数
int function2()
{
	cout << "this is functioon2" << endl;
	return 1000;
}
//有参无返函数
void function3(int a)
{
	cout << "function3中的a=:" << a << endl;
}
//有参有返
int function4(int a)
{
	cout << "function4中的a=:" << a << endl;
	return a + 5;
}
int main()
{
	//1、函数的四种样式
	//1.1、无参无返
	function1();
	//1.2、无参有返
	int a = function2();
	cout << "function2返回值为:" << a << endl;
	//1.3、有参无返
	int m = 5;
	function3(m);
	//1.4、有参有返
	int n = 9;
	int i = function4(n);
	cout << "function4的返回值为:" << i << endl;
	system("pause");
	return 0;
}

函数的声明与分文件编写

//****.h*****函数的声明
#include
using namespace std;
void Add1(int a, int b);
int Swap1(int a, int b);
//****.cpp****函数的定义
#include
using namespace std;
void Add1(int a, int b)
{
	int c = a + b;
	cout << c << endl;
}
int Swap1(int a, int b)
{
	int temp = a;
	a = b;
	b = temp;
	return temp;
}
//****主函数****
#include
#include"reveiw.h"
using namespace std;
int main()
{
	//函数的声明,当创建的函数位于main函数的下面时在main函数上方要添加函数声明
	//函数的声明包括:函数类型 函数名();
	int a = 10;
	int b = 84;
	Add1(a, b);
	//函数的分文件编写
	//函数的分文件编写中,函数的声明放在.h文件中,函数的定义放在.cpp文件中
	int c = Swap1(a, b);
	cout << c << endl;
	system("pause");
	return 0;
}

4 指针 指针的定义及指针的所占内存,空指针和野指针

#include
using namespace std;
int main()
{
	//1、指针的定义  数据类型*  指针名
	int a = 0;
	int* p = &a;//指针本身可指地址,加*解引用 *** 作
	cout << "a= " << a << endl;
	cout << "a= " << *p << endl;
	*p = 33;//解引用操作
	cout << "a= " << *p << endl;
	//2、指针所占内存
	cout << "指针的内存大小为:" << sizeof(p) << endl;//sizeod(p)
	cout << "指针的内存大小为:" << sizeof(float*) << endl;
	cout << "指针的内存大小为:" << sizeof(double*) << endl;
	cout << "指针的内存大小为:" << sizeof(char*) << endl;
	//2.1、无论是何数据类型,指针均占8个内存
	//3、空指针
	int* p1 = NULL;
	//3.1、空指针可用作指针的初始化操作指向0内存空间,但不可访问,0`255号内存空间位系统所用,用户不可进行操作
	//4、野指针
	int* p3 = (int*)0x1100;//不进行初始化赋值操作直接指向某一内存空间的指针,不可进行访问操作
	system("pause");
	return 0;
}

5 const修饰的指针

#include
using namespace std;
int main()
{
	int a = 10;
	int b = 20;
	//1、const指针——常量指针
	const int* p = &a;
	p = &b;
	//*p = 50;,不能进行 *** 作
	//1.1、上两行代码说明常量指针可以改变指针指向,但不能修改内存空间的值
	//2、指针const——指针常量
	int* const p2 = &a;
	*p2 = 90;
	//p2 = &b;不能进行 *** 作
	//2.1、上两行代码说明指针常量不可以改变指针指向,但能修改内存空间的值
	//3、常量指针常量 const int* const p
	const int* const p3 = &a;
	/*p3 = 80;
	p3 = &b;*///均不可进行 *** 作
	//3.1、都不能更改
	system("pause");
	return 0;
}

6 指针和数组,注意利用指针遍历数组时的循环

#include
using namespace std;
int main()
{
	int arr1[] = { 2,4,6,776,879,664,3 };
	int* p_1 = arr1;//数组名即为数组的首地址,指针指向数字组的首地址
	int len = sizeof(arr1) / sizeof(arr1[0]);
	cout << *p_1 << endl;
	//用指针遍历数组
	for (int i = 0; i < len; i++)
	{
		cout << *p_1 << endl;
		p_1++;//指针遍历数组,用循环的条件限制指针加一的次数,从而正确的显示出元素的个数
	}
	system("pause");
	return 0;
}

7 指针和函数

#include
using namespace std;
//创建函数时,形参的数据应该变为指针类型,传入的实参为数据的地址,加以匹配
int Add_1(int* p1, int* p2)
{
	int c = 0;
	c = *p1 + *p2;
	return c;
}
int main()
{
	int a = 54;
	int b = 77;
	//调用函数时传递函数的地址
	int i=Add_1(&a,&b);
	cout << "和为:" << i << endl;
	system("pause");
	return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/578131.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)

保存