指针
来源:互联网 发布:网络直播议论文 编辑:程序博客网 时间:2024/06/05 13:34
指针是一种新的数据类型,它的值代表存储单元的地址,它的类型代表指针所指存储单元占用多少个连续字节内存单元。
存放指针的变量称为指针变量。指针变量的格式是:
《存储类型》 <类型> *<变量名>
存储类型任选;变量前的*指明说明的变量为指针变量;而类型则指出指针变量所指向的数据类型,即指针所指向的存储单元中存放的数据类型。
例如:int *p1,*p2,i,j; //说明了两个整型指针变量p1,p2,两个整形变量i,j
指针的运算
指针的运算有:赋值、关系、算术和强制类型转换。
指针的赋值:将一个指针赋给一个指针变量称为指针的赋值。
例如:int a=1,*p1,*p2;
p1=&a; //L1,将变量a的指针赋给p1;
p2=p1; //L2,将同类型的指针p1赋给p2;
&是地址运算符,因为指针表示的是存储单元的地址,所以L1语句表示的是将变量a的地址赋给p1,L2语句因为p1、p2都是指针,所以不需要用&运算符。
如果要访问指针变量所指向的变量时,要用一元运算符“ * ”。运算符*可取出指针指向地址中存储的数值。
例如: int *p1,*p2,i=100,j;
p1=&i;
p2=&j;
*p2=*p1+200; //将p1所指向的变量(即变量i)+200再赋给p2所指向的变量(即变量j)
指针的算术运算
指针的算术运算分为三种:一是指针变量的 ++或 - -,而是指针变量值加或减一个整数值,三是两个同类型指针的相减。
(1)指针变量执行++或- -操作时,其含义是是指针指向下一个或上一个变量,而指针变量的值实际加或减sizeof(指针变量类型)。
(2)指针变量加或减一个整数值,即:
<指针变量>=<指针变量>+(-)n;
指针变量指向其后或其前第n个变量,指针变量的值实际是:
<指针变量>=<指针变量>+(-)zsizeof(<该指针变量的类型>)*n;
指针的关系运算
指针的关系运算主要用于数组方面。指针的关系运算依据指针值得大小来进行。通常只有同类型的指针比较才有意义,相等比较的含义是判断两个指针是否指向相同的变量,即两个指针是否相同;而不相等比较的含义是判断两个指针是否指向不同的变量;当指针与0比较时,表示指针的值是否为空。
例如
#define <stdio.h>
int main(void)
{
int a[5]={100,200,300,400,500},sum=0;
int *p1,*p2;
for(p2=&a[0];p2<=&a[4];p2++) //A
printf("%5d",*p2);
printf("\n");
p1=&a[0]+5; //B
p2=&a[0]; //C
while(p2!=p1) // D
sum+=*p2++; //E
printf("The sum of a is %d.\n",sum);
return 0;
}
输出结果如下:
100 200 300 400 500
The sum of a is 1500.
程序输出数组a的所有元素,并计算数组a的元素之和。A行循环执行完后,p2指向数组a最后元素的后面;B使指针p1指向数组a的最后元素的后面;C行使p2重新指向数组a的第0个元素;D行中的条件成立时,表示没有遍历数组a中的所有元素;E行中的*p2++,因运算符*和++优先级相同,按从右到左
的顺序计算,即先进行p2++的运算,即取出p2的值参加后续运算,然后使p2加1,因此*p2++等同于语句“ sum+=*p2;p2++; ”。
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 借用大神的框架为RecyclerView设置分割线
- 小七的Javascript 1月6日(附点面试小技巧)
- 反射机制
- ubuntu-cuda8.0-tensorflow
- JavaScript高级程序设计14--JSON
- 指针
- VSCode Lua 高亮代码
- linux centos7 安装出现 license information(license not accepted)解决办法
- linux最基础的命令
- Oracle练习总结一
- 死循环在BEAB BKPT 0xAB汇编的解决办法
- java网络编程精解学习笔记(第二章 socket详解)
- python的sorted函数对字典按key排序和按value排序
- 【Bash百宝箱】awk