C语言指针用法详解(二)|C语言指针用法详解(二) 指针的算术运算

例题1:

  • Question :
char a[20]; int *ptr = (int* )a; ptr++;
  • Practice :
C语言指针用法详解(二)|C语言指针用法详解(二) 指针的算术运算
文章图片
  • Reason :
#include using namespace std; int main() { char a[20]; int *ptr = (int* )a; ///强制类型转换不会改变a的类型 /*** **吾日三醒指针:指针的类型,指针指向的类型,指针指向哪里 **ptr 的类型是 int* , 指向的类型是 int , 指向整形变量 a ***/ cout<<" befor : " << ptr<
文章图片


例题2:
  • Question :
int arr[20] = {0}; int *ptr = arr; for (int i=0; i<20; i++) { (*ptr)++; ptr++; }
  • Practice :
C语言指针用法详解(二)|C语言指针用法详解(二) 指针的算术运算
文章图片

  • Reason :
#include using namespace std; int main() { int arr[20] = {0}; int *ptr = arr; /*** **吾日三醒指针:指针的类型,指针指向的类型,指针指向哪里 **ptr 的类型是 int* , 指向的类型是 int , 指向 arr ***/ for (int i=0; i<20; i++) { (*ptr)++; /// 改变的是 ptr 指向的值 ptr++; /// 改变的是 ptr 指向的地址,再次验证 ptr自增的是 sizeof(ptr) cout<<"ptr: "< } } C语言指针用法详解(二)|C语言指针用法详解(二) 指针的算术运算
文章图片

例题3:
  • Question :
char a[20] ="You_are_a_girl; int *ptr = (int *)a; ptr += 5;
  • Practice :
C语言指针用法详解(二)|C语言指针用法详解(二) 指针的算术运算
文章图片

  • Reason
#include using namespace std; int main() { char a[20] = "You_are_a_girl"; int *ptr = (int * )a; /*** **吾日三醒指针:指针的类型,指针指向的类型,指针指向哪里 **ptr 的类型是 int* , 指向的类型是 int , 指向 a ***/ cout<<"ptr: "< ptr += 5; /*** **ptr + 5 : 编译器处理为ptr的值加上 5 * sizeof(int) **ptr 向高地址移动20个字节, 此时超出a 的合法范围, 但是语法可以 ** 我也不懂这里为什么超出 a 的合法范围 ????求教 ***/ cout<<"ptr: "< } C语言指针用法详解(二)|C语言指针用法详解(二) 指针的算术运算
文章图片

例题4:
  • Question :
char a[20] = "You_are_a_girl"; char *p = a; char **ptr = &p; printf("**ptr = %c \n", **ptr); ptr++; printf("*ptr = %c \n", **ptr);
  • Practice :

  • Reason
#include using namespace std; int main() { char a[20] = "You_are_a_girl"; char *p = a; char **ptr = &p; /*** **吾日三醒指针:指针的类型,指针指向的类型,指针指向哪里 **p 的类型是 char* , 指向的类型是 char , 指向 a **ptr 的类型是 char ** , 指向的类型是 char* , 指向 &p ***/ printf("**ptr = %c \n", **ptr); /*cout<<" *p "<<*p<【C语言指针用法详解(二)|C语言指针用法详解(二) 指针的算术运算】 cout<<" sizeof(char *) "
  • ptrold指针的类型 和 ptrnew指针的类型 相同
  • ptrold指针指向的类型 和 ptrnew指针指向的类型 相同
  • ptrold指针的指向(值)和 ptrnew指针的指向(值)相差为指向类型的字节数
  • 2. 两个指针不能作加法运算,非法操作 3. 两个指针可以作减法操作,但必须类型相同

      推荐阅读