指针的练习
地址:物理空间(内存条)的连续编址 1、指针:就是地址 2、指针变量:专门用于存储地址的 类型* 变量名; 注:每一个指针变量都分配4Byte 注:地址就是物理空间的一个编号,指针是某类型空间的地址 3、空指针:NULL (void*)0 *4、指针的运算: + - point+n n整型数字 注:point+n*sizeof(point类型) 运算符: 1、求变量空间的地址: & 2、取地址内容运算符: *point *数组:是一块连续且同类型的存储空间 类型 score[长度]; 数组名就是首地址 引用数组元素:下标法(score[0]) 指针法() 指针数组:多个指针变量空间 类型* 变量名[长度]; 初始化 类型* 变量名[长度]={value1,...}; 引用数组元素:引用数组元素的内容(下标法,指针法)
#include<iostream> #include<stdio.h> using namespace std; int main() { //定义一个整型变量 : 类型 变量名 short num = 100; //分配两个字节 cout<<"sizeof(num) "<<sizeof(num)<<endl<<"num="<<num<<endl; //指针 cout<<"&num="<<&num<<endl; //引用空间的内容: 变量名 cout<<"num="<<num<<endl; cout<<"*(short*)0x0019FF3C "<<*(short*)0x0019FF3C<<endl; //存储地址的空间 //定义指针变量: (每个指针变量为4byte 32位bit) short* pa=# cout<<"sizeof(pa)="<<sizeof(pa)<<endl; //引用指针变量: cout<<"pa= "<<pa<<" pa="<<*pa<<endl; return 0; }
打印如下:
#include<iostream> #include<stdio.h> using namespace std; int main() { //定义整型变量: short int long 分配空间 short a=100; //并初始化 int b = 16909060; //并初始化 cout<<"sizeof(a)="<<sizeof(a)<<" &a="<<&a<<endl; //引用变量: 名字 地址 cout<<"a="<<a<<" *(&a)="<<*(&a)<<endl; //储存地址的空间 //定义指针变量: short* pa=&a; //引用指针变量: cout<<"sizeof(pa)="<<sizeof(pa)<<" &pa="<<&pa<<endl; cout<<"pa="<<pa<<" *pa="<<*(pa)<<endl; //难点: //short* pb=(short*)&b; //cout<<"pb="<<pb<<" *pb="<<*pb<<endl; char* pc = (char*)&b; printf("pc=%x *pc=%d\n",pc,*(pc)); return 0; }
打印如下:
此处的pb是int型元素的地址 pb+1 加的是一个int型的(四个字节) 故0+4=4.
此处的pd是short元素的地址 pd+1 加的是一个short型的(两个字节)故0+2=2.
此处的pc是char元素的地址 pd+1 加的是一个char型的(一个字节)故0+2=2.
#include<iostream> #include<stdio.h> using namespace std; int main() { //定义一个整型指针变量 int c = 1554; int* pb=NULL; printf("pb=%x pb+1=%x\n",pb,pb+1); short* pd=NULL; printf("pd=%x pd+1=%x\n",pd,pd+1); char* pc=NULL; printf("pc=%x pc+1=%x\n",pc,pc+1); short* fp = (short*)&c; printf("fp=%d\n",*fp); return 0; }
打印如下: