zoukankan      html  css  js  c++  java
  • 06 指针入门

    1,简单的说,指针表示一个地址,存放的是地址

     1 #include<stdio.h>
     2 
     3 void main() {
     4     int num = 1;
     5     printf("num的值=%d  num的地址=%p
    ", num, &num);
     6     //1,如果要输出一个变量的地址,使用格式是 %p
     7     //2,&num表示取出num这个变量对应的地址
     8 
     9 
    10     int* ptr = &num; //定义一个指针变量,指针
    11     printf("ptr的地址是%p  ptr存放的值是一个地址为%p  ptr存放的地址所指向的值是(ptr指向的值)%d
    ",&ptr,ptr,*ptr);
    12     //1,int* 表示类型是 指针类型
    13     //2,名称ptr,ptr就是一个 int* 类型
    14     //3,ptr指向了一个 int 类型的变量(的地址)
    15     //4,指针变量,本身也有地址 &ptr
    16     //5,获取指针变量存放的地址 ptr
    17     //6,获取指针指向的值:*ptr
    18 
    19 }

     内存布局图:

     2,练习1

      写一个程序,获取一个int 变量 num 的地址,并显示到终端将num 的地址赋给指针 ptr,并通过 ptr 去修改 num 的值,并画出内存布局图

    1 #include<stdio.h>
    2 void main() {
    3     int num = 100;
    4     printf("num的值是%d num的地址是%p
    ", num, &num);
    5 
    6     int* ptr = &num;
    7     *ptr = 200;
    8     printf("num的值是%d num的地址是%p
    ", num, &num);
    9 }

       内存布局图

        

    3,练习2

      判断程序是否正确

      

     4,练习3

      输出什么内容

     1 #include<stdio.h>
     2 
     3 void main() {
     4     int a = 300;
     5     int b = 400;
     6     int* ptr = &a; //ptr 指向a
     7     *ptr = 100; //a=100
     8     ptr = &b;  //ptr指向b
     9     *ptr = 200; //b=200
    10     printf("a=%d,b=%d,*ptr=%d", a, b, *ptr);
    11 }

     5,指针细节

      ①基本类型,都有对应的指针类型,形式为 数据类型*  ,比如 int的对应的指针就是 int* , float 对应的指针类型就是 float* ,以此类推

      ②此外还有指向数组的指针,指向结构体的指针,指向共用体的指针,二级指针,多级指针等。

      

      

      

  • 相关阅读:
    自定义排序方式
    Ajax 调用(传值)一般处理程序(.ashx)
    把一个文件夹下的所有excel添加到datatable
    list比较交集
    禁用未登录通过连接下载文件
    加密方式
    使用response.write输出excel
    linux安装OpenCV以及windows安装numpy、cv2等python2.7模块
    哈希长度扩展攻击(Hash Length Extension Attack)利用工具hexpand安装使用方法
    yafu安装使用方法以及mismatched parens解决方法
  • 原文地址:https://www.cnblogs.com/shanlu0000/p/12337603.html
Copyright © 2011-2022 走看看