• quiz 3


    1. 一个结构体变量的指针是该结构体变量所占据内存段的起始位置,形如:

    struct 结构名 * 结构指针变量名

    2. 赋值是把结构变量名首地址赋予该指针变量,访问结构变量名成员的常见方式为:

    指针变量名->成员名
    (*指针变量名).成员名

    3. malloc返回的是一个指向分配域起始地址的指针,没有返回NULL

    4. 字符串

    (a) 直接对字符指针赋值

    char *a="hello";

    声明了一个字符指针*a后,将字符串常量“hello”的第一个字符的地址赋值给指针变量a

    *a仅指向一个字符

    (b) 字符串赋值给字符指针

    char *p, a='5';
    p=&a;                     
    p="abcd"; 

    双引号的作用是在常量区申请空间存放字符串,并在字符串尾部加上'/0',然后将地址返回赋值给指针变量p

    (c) 字符数组的初始化

    char a[10]="hello";

    初始化时可以对字符数组赋予初值,也可以通过下标对其元素进行访问,但不能通过下标对其直接进行修改

    在这里字符数组的解析方式为:

    char str[10] = {'h', 'e', 'l', 'l', 'o', ''};

    可以对字符数组进行修改的方式是strcpy()函数,即:

    char a[26];
    strcpy(a, "catdog");

    而当赋值给字符指针时,如:

    char* ptr = "abc"

    因为定义的是一个普通字符指针,并没有定义空间来存放"abc",所以编译器会将"abc"当成常量并把它放到程序的常量区

    5. 字符指针的赋值

    (a) 指向一个字符串常量

    char *src = "abcded";

    这种方式由系统自动给该字符指针指定了一个内存中的位置,如果此时再次对 src赋值: src = "mmmt", 则src指向另外一个由系统指定的内存块(由"mmmt"本身返回)

    通过这种方式赋值的src为一个指向字符串常量的指针,不能对src指向的位置的内容做改变的操作,即不能执行 *src = 'a', *(src+1) = 't' 等操作

    但是可以改变src指向的位置,即像之前的 src = "mmmt";

    (b) 指向一个字符数组

    char tmp[4] = {'a', 'c', 'e', 'f'};
    char* src = tmp;  

    (c) 使用  new,然后可以像字符数组一样赋值,即指向一个字符数组

    char* src = new char[10];

    这种方式由程序在堆内存上开辟了一个数组,并将地址赋值给src

  • 相关阅读:
    微信小程序 组件事件传递
    vue 项目引入字体报错
    vue 单文件 样式写了scoped 不能覆盖框架原有样式的解决办法
    react 动态获取数据
    百度地图marker点击任意一个当前的变化,其余的marker不变
    对象字面量中可以使用中括号作为属性,表示属性也能是一个变量
    二维数组转化为一维数组 contact 与apply 的结合
    一个对象如何复制给另一个对象,互不影响
    在-for 循环里面如何利用ref 操作dom
    mac 进程管理
  • 原文地址:https://www.cnblogs.com/eleni/p/11825473.html
Copyright © 2020-2023  润新知