培训笔记 C++

指针笔记

  1. 指针变量的定义

类型名  * 指针变量名

int  *p;

p 是整型指针,指向整型变量

float *fp;   

fp 是浮点型指针,指向浮点型变量

char *cp;

cp 是字符型指针,指向字符型变量

int  * p;

指针变量名是 p,不是*p

* 是指针声明符

int  k, *p1, *p2;

等价于:

int  k;

int  *p1;

int  *p2;

定义多个指针变量时,每一个指针变量前面都必须加上*

2.指针的基本运算

如果指针的值是某个变量的地址,通过指针就能间接访问那个变量。

取地址运算和间接访问运算

&  取地址运算符

int *p, a = 3;  (指针变量的类型和它所指向变量的类型相同)

p = &a;    把 a 的地址赋给 p,即 p 指向 a

*   间接访问运算符,访问指针所指向的变量

printf("%d", *p);   输出 p 指向的变量 a 的值

3.指针变量的初始化

1) 指针变量在定义后也要先赋值再引用

2) 在定义指针变量时,可以同时对它赋初值

     int a;

     int *p1 = &a;

     int *p2 = p1;

3) 不能用数值作为指针变量的初值,但可以将一  个指针变量初始化为一个空指针

     int *p=1000;

     p = 0;

     p = NULL;

     p = (int*)1732;

4.指针作为函数参数

函数参数包括实参和形参,两者的类型要一致,可以是指针类型

如果实参是某个变量的地址,相应的形参就是指针

在C++语言中实参和形参之间的数据传递是单向的“值传递”方式

要通过函数调用来改变主调函数中某个变量的值:

(1)在主调函数中,将该变量的地址或者指向该变量的指针作为实参

(2)在被调函数中,用指针类型形参接受该变量的地址

(3)在被调函数中,改变形参所指向变量的值

5.数组和地址间的关系

int a[100], *p;

数组名代表一个地址,它的值是数组首元素的地址(基地址)

a+i 是数组a的基地址的第i个偏移量

6.指针的算术运算和比较运算

double  *p, *q;

q - p

两个相同类型的指针相减,表示它们之间相隔的存储单元的数目

p + 1 / p-1

指向下一个存储单元 / 指向上一个存储单元

其他操作都是非法的

指针相加、相乘和相除,或指针加上和减去一个浮点数

p < q

两个相同类型指针可以用关系运算符比较大小

7.数组名作为函数的参数

数组名是指针常量,相当于指针作为函数的参数

数组名做为实参,形参是指针变量(数组)

(1) 实参是数组名

(2) 形参是指针变量

     可以写成数组形式

8.字符串和字符指针

字符串常量

"array"

"point"

用一对双引号括起来的字符序列

被看做一个特殊的一维字符数组,在内存中连续存放

实质上是一个指向该字符串首字符的指针常量

char sa[ ] = "array";

char *sp = "point";

字符指针-先赋值,后引用

9.常用的字符串处理函数

函数原型在 stdio.h 或 string.h 中给出

1. 字符串的输入和输出

输入字符串:scanf ( )或gets ( )

输出字符串:printf ( )或puts ( )

stdio.h

(1)scanf("%s", str)

输入参数:字符数组名,不加地址符

遇回车或空格输入结束,并自动将输入的一串字符和 '\0' 送入数组中

(2)gets(str)

遇回车输入结束,自动将输入的一串字符和 '\0' 送入数组中

输出参数可以是字符数组名或字符串常量,输出遇 '\0' 结束

10.字符串的复制、连接、比较、求字符串长度

string.h

字符串复制:strcpy (str1, str2)

字符串连接:strcat (str1, str2)

字符串比较:strcmp (str1, str2)

求字符串长度:strlen (str)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值