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;
}