【C Prime Plus】学习笔记,Chapter 10,数组和指针之五
来源:互联网 发布:python idle是干嘛的 编辑:程序博客网 时间:2024/05/29 21:16
// 【C Prime Plus】学习笔记,Chapter 10,数组和指针之五// 指针的赋值,加减运算// Page 667#include <stdio.h>int main(void){int *ptr0,*ptr1,*ptr2; // 如果指针没有初始化,进行 ++ 运算,编译会warning使用了没有初始化的指针,但是不是严重错误 //ptr0++;// 如果没有初始化,就给指针所指的"地址"赋值,其实这个地址是不确定的,编译能通过,仅仅是警告,但是链接就显示这是严重错误的// 可能会覆盖其他的地址上的数据,或者直接导致程序崩溃 //*ptr0=5;int arn[5]={100,200,300,400,500};// (1) 给指针赋值,通常是数组名 或者 用&运算符取某个地址 ptr0 = arn; ptr1 = &arn[1]; printf("指针ptr0的值(地址)是:%ld\n",ptr0); printf("指针ptr1的值(地址)是:%ld\n",ptr1); // (2) * 运算,所谓的解指引, 就是取指针对应的值 int x = *ptr0; // (3) &运算,就是取地址运算,可以取指针它自身的地址 printf("指针ptr0自身的地址是:%ld\n",&ptr0); // (4) 加整数N到指针上,这种算法实际就是移动N个单元,单元就是指针的所指的基本数据类型 // (减整数N也一样的意思,移动方向相反) // 不论是指针是什么类型的,int,long,或double ,这里的N都必须是整数,因为指针作为地址,其值本质上unsigned int ptr2=ptr0+2; // 找到ptr0的地址,然后向后移动2个单元.(不是移动ptr0哦,ptr0本身是没有改变的) printf("指针ptr2的值(地址)是:%ld\n",ptr2); printf("指针ptr2地址保存的值arn[2]:%ld\n",*ptr2); // (5) 使用 ++ 或 -- 运算 ptr0++; // 这样改变了ptr0的指向 printf("指针ptr0的值(地址)是:%ld\n",ptr0); printf("指针ptr0地址保存的值:%ld\n",*ptr0); ptr0--; printf("指针ptr0的值(地址)是:%ld\n",ptr0);printf("指针ptr0地址保存的值:%ld\n",*ptr0);//(6) 2个指针做差运算: 结果并非是想当然的十六进制的地址数值本身的差,而是指针的单元间距int y = ptr1-ptr2; //低位减高位printf("指针ptr1-ptr2的值(地址)是:%ld\n",y); // 结果是-1,并非-4int z = ptr2-ptr1; // 高位减低位 printf("指针ptr2-ptr1的值(地址)是:%ld\n",z); // 结果是 1,并非 4 //---return 0;}
输出结果:
指针ptr0的值(地址)是:1245024
指针ptr1的值(地址)是:1245028
指针ptr0自身的地址是:1245052
指针ptr2的值(地址)是:1245032
指针ptr2地址保存的值arn[2]:300
指针ptr0的值(地址)是:1245028
指针ptr0地址保存的值:200
指针ptr0的值(地址)是:1245024
指针ptr0地址保存的值:100
指针ptr1-ptr2的值(地址)是:-1
指针ptr2-ptr1的值(地址)是:1
- 【C Prime Plus】学习笔记,Chapter 10,数组和指针之五
- 【C Prime Plus】学习笔记,Chapter 10,数组和指针之二
- 【C Prime Plus】学习笔记,Chapter 10,数组和指针之三
- 【C Prime Plus】学习笔记,Chapter 10,数组和指针之四
- 【C Prime Plus】学习笔记,Chapter 10,数组和指针之一
- 【C Prime Plus】学习笔记,Chapter 10,数组初始化问题
- 【C Prime Plus】学习笔记,Chapter 12, 指针常量和常量指针
- 【C Prime Plus】学习笔记,Chapter 4, limits.h 和 float.h
- 【C Prime Plus】学习笔记,Chapter 10,用const 修饰形参 保护数据,以防修改
- 【C Prime Plus】学习笔记,Chapter 3, 整型溢出 (integer overflow)
- (c/c++学习笔记五)数组和指针
- C Primer Plus学习 十九 指针和数组
- C Primer Plus学习 二十 函数、数组和指针
- 《C Primer Plus》 学习笔记系列之(五)
- 《C和指针》学习笔记(五)
- 《C和指针》学习笔记五/数组、字符串字符和字节/
- C语言学习笔记之指向数组元素的指针和指向数组的指针
- c prime plus的笔记
- 自定义的JavaScript定时器javascript
- 【javascript实现的图片查看器】仿lightboxjavascript
- 开发资源收集:128个ajax/javascript框架javascript
- Javascript jiqiaojavascript
- JavaScript 图片上传预览效果javascript
- 【C Prime Plus】学习笔记,Chapter 10,数组和指针之五
- javascript中的事件处理程序(事件侦听器)javascript
- 收藏网站制作常用经典ajax.prototype.javascript实例打包下载javascript
- Eclipse开发Javascript环境配置(含EXTJs配置)javascript
- Unobtrusive JavaScript in ASP.NET MVC 3javascript
- 全面理解javascript的caller,callee,call,apply概念(修改版)javascript
- javascript的urlencodejavascript
- JavaScript 能做什么?javascript
- javascript 调试javascript