nullnullnull教学目标教学目标(1) 了解指针类型及引用类型的概念及二者的关系与区别;
(2) 了解指针与引用变量的使用与操作方法;
(3) 了解用指针访问变量、数组、字符串的方法。基本内容 基本内容 6.1 指针
6.2 指针与数组
6.3 引用 6.1 指针 6.1 指针 6.1.1 地址
6.1.2 指针的定义
6.1.3 指针的初始化
6.1.4 指针的使用
6.1.5 函数的传址调用方式6.1.1 地址6.1.1 地址计算机的内存储器就象一个一维数组,每个数组元素就是一个存储单元。
地址是存放信息数据的内存单元的编号。
程序中定义的任何变量、数组或函数等,在编译时都会在内存中分配一个确定的地址单元。如何
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示地址?如何表示地址?凡是存放在内存中的程序和数据都有一个地址,可以用它们占用的那片存储单元中的第一个存储单元的地址表示。
C++规定:
变量的地址: 可以用取地址运算符‘&’ 来获取
数组的地址: 可以用数组名表示
函数的地址: 可以用函数名表示例6-1:取地址运算符&和指针运算符*例6-1:取地址运算符&和指针运算符*#include
using namespace std;
int main()
{
int x = 100;
cout <<"变量的值是:" << x << endl;
cout <<"变量的所在的地址是:" << &x << endl;
cout <<"该地址所存储的变量值为:" <<*(&x) << endl;
return 0;
}6.1.2 指针的定义6.1.2 指针的定义 数据类型 *指针变量名;
例:int * ptr; float *array; char *s1,*s2;
说明:
数据类型是指针所指向变量的类型;
*是一个说明符,它不是指针变量名的一部分,而是表示这里说明的是一个指针;
指针变量名是指针变量的名字6.1.3 指针的初始化6.1.3 指针的初始化指针在定义后必须初始化才能使用;否则,结果不确定。
指针初始化的一般格式:
数据类型 *指针变量名 = 初始地址值;
或 数据类型 *指针变量名;
指针变量名 = 数据对象地址;
其中数据对象地址可以是变量、数组、函数、结构等的地址。如:
int x=7; int *ptr=&x; //指向单个变量
char *sp; sp=“string”; //指向字符串
int a[5],*ap; ap=a; //指向数组
int max(),(*fp)(); fp=max; //指向函数
编程中常用的初始化方法:
int *ptr=NULL; //初始化为空指针6.1.4 指针的使用6.1.4 指针的使用// 例6-2:通过指针访问变量
#include
using namespace std;
int main()
{ int x = 7;
int *ptr;
ptr = &x;
cout<<"x="<
using namespace std;
void swap (int *xp, int *yp)
{ int tmp;
tmp = *xp; *xp = *yp; *yp = tmp;
}
int main()
{ int a = 2, b = 3;
cout << "Before exchange:a= " << a << ",b= " << b << endl;
swap(a, b);
swap(*a, *b);
swap(&a, &b);
cout << "After exchange:a= " << a << ",b= " << b << endl;
return 0;
}运行结果:
Before exchange:a=1,b=2
After exchange:a=2,b=16.2 指针与数组6.2 指针与数组6.2.1 指针与一维数组
6.2.2 指针与字符串6.2.1 指针与一维数组6.2.1 指针与一维数组计算机中处理数组时,实际上是将a[i]转换成
*(a+下标表达式值)的形式。即
a[i] *(a+i)
因为数组名可以表示该数组的首地址,所以:
a[i] *(a+i) *(ptr+i)
其中,ptr是指向a的指针。
由此可见,用指针处理数组及元素是最快捷的方式例6-4 用多种方法输出数组元素例6-4 用多种方法输出数组元素#include
using namespace std;
int main()
{
int a[]={1, 2, 3, 4, 5};
// int *ptr;
// ptr = a;
for(int i=0; i<5; i++)
cout<
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
设
char *string;
char string1[4];
string=string1;
有
string1[0] = = *string
string1[1] = = *(string+1)例6-5:计算字符串长度例6-5:计算字符串长度#include
using namespace std;
int mystrlen(char *string)
{
char *ptr=string;
while(*ptr!= '\0')
ptr ++; // 指针后移,直到指向字符串结束标志
return ptr-string;
}
int main()
{
char str[] = "How long am I?";
cout<
using namespace std;
void swap (int &x, int &y)
{
int tmp = x;
x = y;
y = tmp;
}
int main()
{ int a = 1,b = 2;
cout << "Before exchange:a= " << a << ",b= " << b << endl;
swap(a, b);
cout << "After exchange:a= " << a << ",b= " << b << endl;
return 0;
}运行结果:
Before exchange:a=1,b=2
After exchange:a=2,b=1扩展阅读扩展阅读6.4 动态存储分配
6.5 自定义数据类型
6.5.1 结构体类型
6.5.2 枚举类型 6.4 动态存储分配6.4 动态存储分配运算符new用来申请所需的内存
指针 = new 数据类型(初值);
运算符delete用于释放先前申请到的存储块
delete 指针;
例:
int *p = new int (5);
delete p;
为数组申请动态内存:
指针 = new 数据类型[数组元素个数];
释放数组占用的动态内存空间:
delete [] 指针;
例:
int *p = new int [size];
delete []p; 例 6-8:用动态数组来求斐波那挈数列的前n项例 6-8:用动态数组来求斐波那挈数列的前n项#include
using namespace std;
int main()
{ int n;
cout<<"求斐波那挈数列的前n项,请输入n:";
cin>>n;
int *p =new int[n+1];
p[0]=0;
p[1]=1;
cout<
结构体指针变量名->成员变量名
例:
Student stu1, stu2, *ptr = &stu2;
stu1.id = 20086035;
ptr-> id= 20091001;结构体的初始化结构体的初始化可采用以下任意一种方式:
先声明结构体变量,再赋初值
Student stu1;
stu1.id = 20086035;
strcpy(stu1.name, "Zhang3");
stu1.score = 96;
声明时赋值:在声明结构体变量的同时对其赋初值
Student stu2={20091001, "Li4", 85.5};
注意:不能在定义结构体类型时给成员变量赋值null// 例 6-9:学生信息--结构体
#include
#include
using namespace std;
struct Student
{
int id; // 学号
char name[20]; // 姓名
float score; // 成绩
};
int main()
{
Student stu1, stu2={20091001, "Li4", 85.5};
stu1.id=20086035;
strcpy(stu1.name, "Zhang3");
stu1.score=96;
cout<<"第1个学生信息:"<
using namespace std;
void bubbleup(int *ptr, int count)
{ for(int i=0; ii; j=j-1)
if(*(ptr+j-1)>*(ptr+j))
{ int tmp = *(ptr+j-1);
*(ptr+j-1) = *(ptr+j);
*(ptr+j) = tmp;
}
}
int main()
{ int list[] = {53, 7, 12, 61, 90, 70, 87};
int i;
cout <<"排序前:" ;
for(i=0; i<7; i++) cout <
using namespace std;
int main()
{
char str[]="Current:Clear, Wind: E at 6 km/h, Humidity: 30%";
char *ptr=str; // 使指针ptr指向字符数组str
int total, capital, small, numeral, others; // 定义各种计数器变量
total=capital=small=numeral=others=0; // 初始化所有计数器变量
while(*ptr!='\0') // 如果*ptr==0则表示字符串结束
{
total++; // 总字符数
if(*ptr>='A'&&*ptr<='Z')capital++; // 若为大写字母,则相应计数加1
else if(*ptr>='a'&&*ptr<='z')small++; // 小写字母计数加1
else if(*ptr>='0'&&*ptr<='9')numeral++; // 数字计数加1
else others++; // 其他字符计数加1
ptr++; // 下一个字符
}
cout<<"字符串:"<
#include
using namespace std;
char *myltrim(char * string)
{
char *ptr=string;
while(*ptr==' ') ptr++;
strcpy(string, ptr);
return string;
}
int main()
{ char str[] = " Who is Buddha?";
cout << "截取前的原始字符串是: [" <
本文档为【c++基础教程6】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。