zoukankan      html  css  js  c++  java
  • 指针

    第八讲:指针

    指针变量: 存储地址的变量;

     指针定义时,数据类型的作用,告诉系统我是一个什么类型的指针;

     指针所占字节数: 只与系统操作位数有关,32 操作系统 4个字节,64 操作系统 8个字节;

     int a = 10;//整型变量 a

     int *p = NULL;//指针变量 p,p的数据类型是: int *

     指针变量定义时,数据类型的作用 (以int 为例):

     1.告诉系统我是一个int 类型的指针

     2.在指针运算时每次偏移的字节数 int ----- 4 个字节

     3.指针的控制字节数,int 控制 4 个字节

     char *q = NULL;//指针q 的类型是: char *

     *号的作用:

     1.告诉系统,接下来定义的变量是指针变量

     2.

     //平时我们所说的指针,其实就是 指针变量,指针中存储的是地址

     //指针变量的输出

     printf("%p\n",p);

    //取值运算符: *

        printf("%d\n",*p);

        //指针变量的赋值: 指针重指向,就是对指针重新赋值的过程.

        //指针的运算: 只有加减运算,

        printf("%p\n",p - 1);

    int a = 10;

        int *p = &a;//在定义时,*p的作用,告诉系统定义的是指针变量

        *p = 30;// *p在等号左侧时是对p中存储的地址进行赋值操作,否则是取值操作

        printf("%d\n",a);

    指针与数组

        int a[] = {9, 5, 3, 7};

        数组名是数组首地址,恒等于数组首个元素的地址,但是数组名是一个常量地址

        printf("%p\n",a);

        printf("%p\n",&a[0]);

    int *p = a;

        //使用指针操作数组中的元素

        //取值

        printf("%d\n",*p);

        printf("%d\n",*(p + 1));

        printf("%d,%d",*(p + 2),*(p + 3));

        

        int b[] = {3, 8, 4, 9};

        p = b;//指针重指向

        printf("%d\n",*p);

    数组与指针的区别:

         数组名是一个常量地址,不能改变,而指针是一个变量,可以重指向(重新赋值).

    字符串数组

        char str[4][20] = {"iPhone", "iPod", "iPad", "iWatch"};

        //指针数组,该数组存储的是栈区空间的地址

        char *strArray[4] = {str[0], str[1], str[2], str[3]};

        //指针数组,该数组存储的是常量区空间的地址

        char strP[4] = {"iPhone", "iPod", "iPad", "iWatch"};

  • 相关阅读:
    HDU5732 Subway【树重心 树哈希】
    HDU6311 Cover【欧拉路径 | 回路】
    HDU6370 Werewolf 【基环内向树】
    HDU6321 Dynamic Graph Matching【状压DP 子集枚举】
    HDU6331 Problem M. Walking Plan【Floyd + 矩阵 + 分块】
    HDU6403 Card Game【基环树 + 树形DP】
    HDU5691 Sitting in Line【状压DP】
    Codeforces Round #650 (Div. 3)
    2017-2018 ACM-ICPC, NEERC, Northern Subregional Contest
    Codeforces Round #649 (Div. 2)
  • 原文地址:https://www.cnblogs.com/hanpengshuai/p/4674309.html
Copyright © 2011-2022 走看看