Loading

C++基础_指针的基本运算

指针的基本运算

&与*操作符

具体示例可以见下图:
image
image
代码演示:

   char ch = 'a';
   // &操作符
   // &ch = 97;			// &ch左值不合法
   char* cp = &ch;			// &ch右值

   //&cp = 97;				// &cp左值不合法
   char** cpp = &cp;		// &cp右值

   // *操作符
   *cp = 'a';				// 
   char ch2 = *cp;
   // *cp + 1  = 'a';
   ch2 = *cp + 1;
   *(cp + 1) = 'a';
   ch2 = *(cp + 1);

++与--操作符

示例:
char* cp2 = ++cp;
image
这是这段代码的汇编语言实现过程
其中最前面一列代表执行代码的地址, 第二列代表操作类型, eax和ecx代表不同的寄存器,dword ptr [cp]代表从指针cp指向的地址中取出值
003716E2 mov eax,dword ptr [cp] 解析:执行003716E2内存地址代码,将指针cp写到eax寄存器中
003716E5 add eax, 1 解析:将寄存器eax中的指针cp加一
003716E8 mov dowrd ptr [cp],eax 解析:再将寄存器eax中的(加了一的指针cp)写回(覆盖)指针cp
下面2步同理,将指针cp再写到ecx寄存器中,再将ecx寄存器里面(加了一的指针cp)写回指针cp2

char* cp3 = cp++;
image

++操作的进一步说明
image
image

posted @ 2021-10-20 23:08  MrSu  阅读(87)  评论(0编辑  收藏  举报