zoukankan      html  css  js  c++  java
  • C语言基本语法——指针

      1、什么是指针

      2、指针用于参数

      3、指针用于返回值

      4、指针加减操作

      5、指针与数组区别

    1、什么是指针

      • 内存被分为字节,每个字节有唯一的地址,指针指的就是内存地址。

      • 保存指针的变量,就叫指针变量。(保存地址)

      • 声明一个指针变量

    int i = 0;

    int* p;//声明一个指针变量 int* 指针类型

    int * p; int* p; int *p;

      • 每个指针变量能指向一种特定类型的对象(地址,内存区 域)。

      • 指针是引用数据类型,因为本身没有保存数据,只是保存了 数据的地址,间接的找到内存中的数据。

     

    2、指针用于参数

      • 值传递

    void swap(int a, int b) {

      int temp = a;
      a = b;
      b = temp;

    }

    int main() {
      int a = 5, b = 8;

      swap(a, b);

      printf(“%d,%d”, a, b);

    }

      • 地址传递

    void swap(int *a, int *b) {

      int temp = *a;
      *a = *b;
      *b = temp;

    }

    int main() {
      int a = 5, b = 8;

      swap(&a, &b);

      printf(“%d,%d”, a, b);

    }

    3、指针用于返回值

      • 指针也可以做为返回值

      • 不要返回自动变量的地址,因为局部变量的生命周期,当函 数结束,局部变量会被自动清除(释放)。解决方案:延长 生命周期。

    4、指针加减操作

      • 指针支持加整数、减整数、指针的比较和相减,但运算的单位由指针的类型决定。

        int类型指针+1 = 地址+4

        char类型指针+1 = 地址+1

      

    5、指针与数组区别

      • 占用内存空间

    -数组占用空间 = 数组元素占用的空间*长度

    -指针占用空间 = 在64位系统下,8个字节,固定的,与指针 的类型没关系。

      • 赋值

    -数组名是常量,是不可以修改其值

    -指针是变量,可以多次赋值

    -对指针的赋值,本质上是指针指向的改变

  • 相关阅读:
    如何写一个简单的解释器
    linux下ifconfig, DNS以及route配置
    再次看编码
    Linux kernel API的查看
    学习Haskell的一些资料
    Unix,windows和Mac中的换行
    Cmake中的find_package功能
    知乎上有一个问题“在mfc框架中,有上面方法能直接将opencv2.0库中的Mat格式图片传递到Picture Control”中显示?
    RANSAC和Flitline
    花40分钟写一个-CBIR引擎-代码公开
  • 原文地址:https://www.cnblogs.com/yyt-hehe-yyt/p/8954670.html
Copyright © 2011-2022 走看看