zoukankan      html  css  js  c++  java
  • C语言之指针

    指针变量被赋某个变量的地址或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 
    ", sizeof(int));
     
      printf("value of %p
    ",a1);
      printf("value of %p
    ",a2);
      printf("value of %p
    ",a3);
      printf("value of %p
    ",a4);
        
      printf("value of %d
    ",*a2);
    
    /*指令格式:<指针变量>++;
    指针变量自加运算是将指针变量指向下一个元素的运算。当计算机执行 <指针变量>++ 指令后,指针变量实际增加值为指针变量类型字节数,即
    <指针变量>=<指针变量>+sizeof(<指针变量类型>)。
    例如实际例子a2的首地址为1000,那么a2++之后的地址为1004.
    */
        
    //  printf("value of %p
    ",++a2);//先计算,后引用
      printf("value of %p
    ",a2++);  //先引用,后计算
      printf("value of %p
    ",a2);
    
      printf("value of %p
    ",*a1);
      printf("value of %p
    ",*a2);
    
      printf("value of %d
    ",*a1);
      printf("value of %d
    ",*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
  • 相关阅读:
    Android 6.0以上动态获取权限
    大学实验3指导:利用单链表实现A-B
    大学课程实验2指导-二叉树的建立与遍历
    大学实验1 哈夫曼编码
    大学java教案之MySQL安装图解
    DrawableAnimation小练习
    Android学习第7天
    Android学习第6天
    There's no Qt version assigned to this project for platform Win32
    OpenBCI 开发环境配置
  • 原文地址:https://www.cnblogs.com/zhangshengdong/p/9856287.html
Copyright © 2011-2022 走看看