东瑜

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

指针变量被赋某个变量的地址或0。

指针变量赋初值有三种情况:
1).用取地址运算符"&"将变量地址赋给指针变量。如:p=&a;
2).将一个指针变量中的地址赋给另一个指针变量,如:p1=p;
3).给指针变量赋空值0,如q=0;表示该指针变量不指向任何变量。

程序举例如下:

#include <stdio.h>
int main( int argc, char *argv[])
{
  int var =20;
  int n[2]={10,18};
  int *a1 ;
  int *a2;
  int *a3;
  int *a4;
  
  a1 = &var; 
  a2 = n; 
  a3 = 0x0000000000;
  a4 = 0; 
         
  printf("int 存储大小 : %lu \n", sizeof(int));
 
  printf("value of %p\n",a1);
  printf("value of %p\n",a2);
  printf("value of %p\n",a3);
  printf("value of %p\n",a4);
    
  printf("value of %d\n",*a2);

/*指令格式:<指针变量>++;
指针变量自加运算是将指针变量指向下一个元素的运算。当计算机执行 <指针变量>++ 指令后,指针变量实际增加值为指针变量类型字节数,即
<指针变量>=<指针变量>+sizeof(<指针变量类型>)。
例如实际例子a2的首地址为1000,那么a2++之后的地址为1004.
*/
    
//  printf("value of %p\n",++a2);//先计算,后引用
  printf("value of %p\n",a2++);  //先引用,后计算
  printf("value of %p\n",a2);

  printf("value of %p\n",*a1);
  printf("value of %p\n",*a2);

  printf("value of %d\n",*a1);
  printf("value of %d\n",*a2);

  return 0;
}

运行结果如下:

[zsd@TOMCAT ~]$ gcc ./test01.c  -o test01
[zsd@TOMCAT ~]$ ./test01 
int 存储大小 : 4 
value of 0x7fff8e0aa7a4
value of 0x7fff8e0aa790
value of (nil)
value of (nil)
value of 10
value of 0x7fff8e0aa790
value of 0x7fff8e0aa794    (由于int类型,是4个字节,所有指针++,代表一个位置为0x7fff8e0aa7940x7fff8e0aa790多4,这个4正好是int类型的字节数)
value of 0x14
value of 0x12
value of 20
value of 18

 

posted on 2018-10-26 14:51  东瑜  阅读(275)  评论(0编辑  收藏  举报
\\页脚html代码