• C语言指针(一)


    一、指针

    定义指针变量

       指针指向的数据类型 *指针变量名称;

       例: int *p;

     *作用:

         1、在定义变量的时候 * 是一个类型说明符,说明定义的这个变量是一个指针变量

         2、在不是定义变量的时候 *是一个操作符,访问指针所指向存储空间

       &作用:

         &作为单目操作符,放在变量的前面,是取出变量的地址

        * 与 & 他们是一对反操作

    指针初始化

    int age = 10;

    int *p = &age;//定义指针同时初始化

    三、指针与字符串

    1、使用字符数组来保存的字符串是保存栈里的,保存栈里面东西是可读可写,所有我们可以改变里面的字符

         当把一个字符串常量赋值一个字符数组的时候,那么它会把字符串常量中的没有字符都放到字符数组里面

      2、使用字符指针来保存字符串,它保存的是字符串常量地址,常量区是只读的,所以我们不可以修改字符串中的字符

    1、多个指针变量可以指向同一个地址

      2、指针的指向是可以改变的

      注意点:

        1、指针没有初始化里面是一个垃圾值,这时候我们这是一个野指针,

           如果操作一个野指针

             1、可能会导致程序崩溃

             2、访问你不该访问数据

           所以指针必须初始化才可以访问其所指向存储区域

        2、指针变量不可以直接赋值一个整形常量,

           因为我们不知道这个整形常量是内存那块地址

    二、指针与数组

    数组不是一个指针

        数组像一个指针,我们可以通过访问指针所指向的存储空间的方式去访问数组中元素

        使用数组名与使用指向数组的指针都可以访问数组中的元素

        char nums[] = {1,2,3,4,5};// 定义一个数组

        printf("nums = %p ",nums);// 输出数组的地址

        printf("%d ",nums[1]);

        char *p  = nums;// 把数组的地址给变量p,数组名就是数组的地址

        printf("%d ",*p);

       // 多种输出方式

        printf("nums[4] = %d ",nums[4]);

        printf("nums[4] = %d ",*(nums+4));

        printf("nums[4] = %d ",p[4]);

        printf("nums[4] = %d ",*(p + 4));

        printf("nums[4] = %d ",4[p]);

    三、指针与字符串

    1、使用字符数组来保存的字符串是保存栈里的,保存栈里面东西是可读可写,所有我们可以改变里面的字符

         当把一个字符串常量赋值一个字符数组的时候,那么它会把字符串常量中的每个字符都放到字符数组里面

      2、使用字符指针来保存字符串,它保存的是字符串常量地址,常量区是只读的,所以我们不可以修改字符串中的字符

  • 相关阅读:
    WebBrowser Control(三)Privacy Alert对话框
    工具栏添加控件
    OpenGL(一)Introduction
    WebBrowser Control(四)URL Security Zones
    OpenGL(二)三维变换
    STL(二)Iterators
    string与wstring转换
    vs2005制作安装包
    唉,又是数组越界的问题!
    CString之GetBuffer、ReleaseBuffer
  • 原文地址:https://www.cnblogs.com/1023843587qq/p/4714903.html
Copyright © 2020-2023  润新知