指针终结者(2)-C语言版

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
  int a = 12;
  int *d =&a;//指针d指向变量a
  int *b =&a;
  int **c;//指向指针的指针,两个**号

  c = &b;


  //*d就是a
  *d = 10 - *d;//10-12 = -2;//这样写是可以的

  printf("a = %d\n",a);

  d = 10 - *d;//而这样写是错误的,由于-2是一个整数,不是一个地址,但是只有是地址才可以赋值给指针,
    

  //&a是变量a的地址,*&a是对a变量这个地址进行间接访问,所以*&a就是a
  *&a = 25;//a = 25;
  printf("a = %d\n",a);
  
  printf("a的地址:%d\n",&a);

  //间接访问需要两个**
  **c = 48;//只是一个指针的指针
  printf("a3 = %d\n",a);//8

  /*
  *1703740 = 36;
  这样写是错的,1245024是一个整数,不是一个地址
  因为C语言对数据类型要求是很严的,
  想要间接操作变量,*号后面必须必须是一个地址

  */

  /*数与指针之间的转换*/
  /*这种方式很少用到,用也是一般用于硬件开发
  或者是操作系统底层开发,和硬件打交道的时候
  (int*)1703740这就叫做指针常量

  */
  *(int*)1703740 = 36;
  printf("a = %d\n",a);


  system("pause");
  return 0; 
}

猜你喜欢

转载自blog.csdn.net/weixin_41998122/article/details/81253229