C++自学笔记004

C++自学笔记004

函数
指针

#include <iostream>
using namespace std;

//#include <swap.h> //自定义函数必须加入相应的头文件

//例子:加法函数add
int add(int sum1, int sum2)
{
	int sum = sum1 + sum2;
	return sum;
}
//例子:交换数值函数chenge;
void chenge(int num1, int num2)
{
	int temp;
	temp = num1;
	num1 = num2;
	num2 = temp;
}

void swap01(int *p01, int *p02)
{
	int temp1 = *p01;
	*p01 = *p02;
	*p02 = temp1;
}

int main()
{
	/*
	1、函数格式:
	返回值类型 函数名(参数列表)
	{
		函数体语句;
		return 表达式;
	}

	2、值传递
	当没有返回值的时候,函数参数类型可以填void
	函数没有返回值的时候,return语句可省略不写,或者只写一个return;
	进行值传递的时候,形参发生的任何改变都不会影响实参的改变
	
	3、函数类型分类:(1)无参无返(2)无参有返(3)有参无返(4)有参有返

	4、函数的声明
	声明可以有多次,函数定义只能有一次
	尽量将函数放在main函数后面,在main函数之前先声明函数的存在(格式:函数参数类型 函数名 (参数列表);)
	
	5、函数的分文件编写
	四个步骤:(1)穿件后缀名为.h的头文件
	(2)创建后缀名为.cpp的源文件
	(3)在头文件中写函数的声明
	(4)在源文件中写函数的定义
	*/

	
	int num1, num2, num;
	cout << "青输入两个整数:" << endl;
	cin >> num1;
	cin >> num2;
	num = add(num1, num2);
	cout << "两个整数的和:" << num << endl;

	chenge(num1, num2);
	cout << "num1 = " << num1 << endl;
	cout << "num2 = " << num2 << endl;	

	//change(num1, num2);
	
	//指针:
	//1、定义一个指针
	int a1 = 10;
	//指针定义的格式:数据类型 * 指针变量名;
	int * p;
	p = &a1;
	cout << "a1的地址是:" << &a1 << endl;
	cout << "指针p为:" << p << endl;
	//2、使用指针
	//可以通过解引用来找到指针指向内存的内容
	//指针前加 * 代表解引用,找到指针指向的内存中的数据
	*p = 1000;
	cout << "a1 = " << a1 << endl;
	cout << "*p = " << *p << endl;
	//3、指针所占内存:32位操作系统:4个字节;64位操作系统:4个字节
	int * p1 = &a1; //一种简便的指针定义语句
	cout << "sizeof (int *) = " << sizeof(int *) << endl;
	cout << "sizeof (float *) = " << sizeof(float *) << endl;
	cout << "sizeof (double *) = " << sizeof(double *) << endl;
	cout << "sizeof (char *) = " << sizeof(char *) << endl;
	//空指针:指针变量指向内存中编号为0的空间
	//用途:用于初始化指针变量(一开始不知道指针指向谁,就只想NULL)
	//空指针不可以进行访问
	//0~255之间的内存编号是系统占用的,因此不可以进行访问
	//定义一个空指针
	int * p6 = NULL;
	//野指针:指针指向非法的内存空间,在编程中应该尽量避免
	
	//4、const修饰指针
	int a2 = 10;
	int a3 = 20;
	//(1)常量指针
	const int * p2 = &a;
	//特点:指针的指向可以修改,但是指针指向的值不可以变
	//*p2 = 20; 错误,指针指向的值不可以改;
	//p2 = &a2; 正确,指针指向可以改。
	//(2)指针常量
	int * const p3 = &a;
	//特点:指针的指向不可以变,指针指向的值可以改
	//*p = 20; 正确,指针的只可以变
	//p = &a3; 错误,指针指向不可以改
	//(3)const即修饰指针,又修饰常量
	const int * const p4 = &a2;
	//特点:指针的指向和指针指向的值都不可以改
	//*p = 20; 错误
	//p = &a3; 错误
	

	//5、利用指针访问数组中的元素:
	int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; //定义一个数组
	int *p5 = arr;  //arr就是数组地址
	cout << "利用指针访问第一个元素:" << *p5 << endl;
	//p5++; //让指针向后偏移4个字节
	cout << "利用指针访问第二个元素:" << *p5 << endl;
	//利用指针遍历数组
	for(int i = 0; i < 10; i++)
	{
		//cout << arr[i] << endl;
		cout << *p5 << endl;
		p5++;
	}
	//利用指针作为函数的参数值,可以修改实参数值
	//值传递(略)
	//地址传递
	int b1 = 10;
	int b2 = 20;
	swap01(&b1, &b2);
	cout << "b1 = " << b1 << endl;
	cout << "b2 = " << b2 << endl;


	system("pause");
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仲子_real

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值