指针的算术运算 。条件:p,q是指向同一数据集合(数组)的指针 运算方式 说明 p+n|p之后第n个元素的地址 p-n|p之前第n个元素的地址 p++|p作为当前操作数,然后后移一个元素 ++Pp后移一个元素,然后作为当前操作数 p p作为当前操作数,然后前移一个元素 p|p前移一个元素,然后作为当前操作数 p-q表示和q两者之间的元素个数 注意避免数组越界 C语言程序设计-第7章指针16
C语言程序设计 - 第7章 指针 16 指针的算术运算 运算方式 说 明 p+n p之后第n个元素的地址 p-n p之前第n个元素的地址 p++ p作为当前操作数,然后后移一个元素 ++p p后移一个元素,然后作为当前操作数 p-- p作为当前操作数,然后前移一个元素 --p p前移一个元素,然后作为当前操作数 p-q 表示p和q两者之间的元素个数 ⚫ 条件:p,q是指向同一数据集合(数组)的指针 ⚫ 注意避免数组越界
指针的关系运算 条件 p,q是指向同一数据集合(数组)的指针 运算方式 ■p<q、p<=q、p=q、p!=q、p>=q、p>q ■p<g:判断p所指元素是否在q所指元素之前 ■其他运算的含义与上述类似 若p,q不是指向同一数据集合的指针,则运 算无意义 C语言程序设计-第7章指针
C语言程序设计 - 第7章 指针 17 指针的关系运算 ⚫ 条件 ◼ p,q是指向同一数据集合(数组)的指针 ⚫ 运算方式 ◼ p<q、p<=q、p==q、p!=q、p>=q、p>q ◼ p<q:判断p所指元素是否在q所指元素之前 ◼ 其他运算的含义与上述类似 ◼ 若p,q不是指向同一数据集合的指针,则运 算无意义
指针的赋值运算 条件 p,q是指向同一数据类型的指针 ■n是整型数据 有意义的赋值方式 p-9r ■p=g+n、p=g-n(要求q指向数组) p+=n、p-=n(要求p指向数组) 注意避免数组越界 C语言程序设计-第7章指针
C语言程序设计 - 第7章 指针 18 指针的赋值运算 ⚫ 条件 ◼ p,q是指向同一数据类型的指针 ◼ n是整型数据 ⚫ 有意义的赋值方式 ◼ p=q ◼ p=q+n、p=q-n (要求q指向数组) ◼ p+=n、p-=n (要求p指向数组) ◼ 注意避免数组越界
指针的运算说明 指针的运算还包括 ■指针运算 ■对指向数组的指针的下标运算 ■对指针变量的取地址运算 对指向结构体的指针的指向成员运算 除上述运算方式(包括约束条件)外的其他 运算都没有意义 无意义的指针运算不一定会出现语法错 误,但可能造成危险的操作 C语言程序设计-第7章指针
C语言程序设计 - 第7章 指针 19 指针的运算说明 ⚫ 指针的运算还包括 ◼ 指针运算 ◼ 对指向数组的指针的下标运算 ◼ 对指针变量的取地址运算 ◼ 对指向结构体的指针的指向成员运算 ⚫ 除上述运算方式(包括约束条件)外的其他 运算都没有意义 ⚫ 无意义的指针运算不一定会出现语法错 误,但可能造成危险的操作
指针的运算举例 低地址 → short a[5],*p,*g; p=&a[0] a[] q=p+2 p+=3; printf("各d",*p++); a[2] scanf("d", *--g)i w个Po5 if [3] printf (d", p-g)i else a[4] printf(d", a-p)i 高地址 C语言程序设计-第7章指针20
C语言程序设计 - 第7章 指针 20 指针的运算举例 short a[5], *p, *q; p = &a[0]; q = p+2; p += 3; printf("%d", *p++); scanf("%d", *--q); if (p>q) printf("%d", p-q); else printf("%d", q-p); ... ... 低地址 高地址 }a[0] }a[1] }a[2] }a[3] }a[4] p q 3 个short