zoukankan      html  css  js  c++  java
  • [C语言

     存放变量地址的变量

    int a = 1;
    int *p;
    p = &a;
     
    在64位系统中,占用8个字节
     
    • 直接引用
    • 间接引用
    *p : 指针指向的变量的值
    不要使用未初始化的指针
     
     
    1.使用指针实现改变实参值
    2.函数返回两个值, 使用指针参数可以改变值的方法
    3.不同类型的指针的区别,区分指向的值的长度
     
    A.指针与一维数组
    1.利用指针读取数组元素
    2.利用指针遍历数组元素
    指针加减可以操作指针的指向地址
    p++, p+1, p+2
    根据指针类型,跳转规定长度的地址
     
    ps:数组名即数组位地址,不允许使用++自加,因为它是常量,不允许赋值,但是可以进行加减供其他地方使用。
     
    使用指针还是数组存储字符串
    需要改变字符串:数组
    不需要改变字符串:指针 char *p = “abc”
     
    数组下标与指针加减
    int a[5];
    int *p = a;  或 int *p = &a[0];
    a[2] ===> p+2;
     
    3.指针数组
    char *names[5] = {“jack”, “Lucy”, “Sam”, “Tom”, “Cc”};
     
     
     
     
    B.指针与函数
    1.指向函数的指针
    函数名代表函数地址
    定义一个指向函数的指针
    sample1:
    1     //Define a pointer pointting to a function
    2     int (*p) (int, int);
    3     p = sum;
    4     //Call sum by p indirectly
    5     p(5,6);
    6  
    sample2:
        void (*p)();
       
        p = test;
       
        p();//or (*p)();
     
    可以把函数当做参数传送
    1 int test(int a, int b, (*p)(int int)
    2 {
    3      return p(a, b);
    4 }
     
    函数名代表函数的首地址,类似数组
     
     
     
    2.返回指针的函数
    1 char *test()
    2 {
    3      return “hello”;
    4 }
     
    C.指针与指针
    指针类型的作用
    例如指针加减p+1 p+2 p-1,自增自减p++, p—,需要根据指针类型确定内存偏移位置
    int **p;//指向整型指针的指针
     
    空指针 void *
    p = NULL;
     
     
    D.指针与字符串
    char name[] = “Simon”; <==字符串变量,数据在栈中
    输出效果等价于
    char *name = “Simon”; <== 字符串常量,数据在常量区
    例如
    char *name1 = “Simon”;
    char *name2 = “Simon”;
    name1 和 name2 指向的实际是同一个常量
        char *name1 = "Tom";
        char *name2 = "Tom";
        printf("name1 addr = %p, name2 addr = %p ", name1, name2);
    out:
    name1 addr = 0x104d05f6d, name2 addr = 0x104d05f6d
     
    指针也能像数组一样访问其中的字符,例如name1[2];
     
     
    区别:
    使用sizeof的时候,对数组能够得到数组所占用的字节数,而指针得到的是指针占用的字节
    字符串数组可以修改字符串,字符串指针不能,只能改变指向 
  • 相关阅读:
    20200924-3 单元测试,结对
    20200924-1 每周例行报告
    20200924-5 四则运算试题生成,结对
    20200924-2 功能测试
    20200924-4 代码规范,结对要求
    20200929-git地址
    20200917-1 每周例行报告
    20200917-2 词频统计
    20200917-3 白名单
    20200910-2 博客作业
  • 原文地址:https://www.cnblogs.com/hellovoidworld/p/4087100.html
Copyright © 2011-2022 走看看