zoukankan      html  css  js  c++  java
  • 自己的总结

    1 五.指针数组和数组指针
    2 1.指针数组 char *p[3];每个元素都是指针
    3 int main(void)
    4 {
    5     char *p1 = "sadqwdq";
    6     char *p2 = "wqdcd";
    7     char *p3 = "32131";
    8    
    9     char *p[3] = {"sadqwdq","wqdcd","32131"};
    10    
    11     //即这个指针数组可以和上面的指针有这样的对应关系
    12
    13     p[1] = p1;            //因为数组p的每个元素都是指针,所以可以和普通指针进行等价赋值操作。
    14     *(p+2) = p2;
    15     *(p+3) = p3;
    16
    17     "注意下面这种状况,是错误的"
    18     scanf("%s",p[1]);
    19     scanf("%s",p+1);
    20     strcpy(p[1],"sadqw");
    21     strcpy(p+1,"sada");
    22     "原因:因为不管是 p[1] 还是 p+1 都是以个指针,而且是无内存空间,所以不可以往里面写内容。"
    23 }
    24 2.数组指针:是一个指针,指向一个数组
    25 int main(void)
    26 {
    27     char (*p)[10];
    28     char str[3][10] = {"sadwq","casas","1323"};
    29     p = str;        "此时p指向数组的第一行首地址,此时指针具有内存(含一个一维数组,10个char型)"
    30     printf("%s",p+1);    "此时 p+1 是一个指针,指向数组 str 的第二行首地址,而且它具有内存,是10个char型大小,可以进行写入操作"
    31     strcpy("%s",p+1);        "p+1 的内容就会被改变"
    32
    33     "但是它不能进行下述操作"
    34     p+1 = "srqweq";        因为 "srqweq" 是一个常量区字符串,写在等号右边意思是把字符串的首地址赋给它。
    35                         因为 1.指针 p 每次 +1 会跳10个char型,即10个字节。 而常量字符串的指针,是普通字符指针,每次 +1 只会跳 4 会跳10个char型,即10个字节。
    36                         步长不一样,编译器会报错。不能进行赋值。
    37                             2."更重要的是:此时p+1指向二维数组第二行的首地址(含一个一维数组),单纯的地址交换,将使数组的一维数组首地址丢失"
    38
    39
    40 }

  • 相关阅读:
    Linux下运行java项目
    Matlab 绘图完整入门
    Matlab命令合集 妈妈再也不用担心我不会用matlab了
    详尽全面的matlab绘图教程
    拉格朗日乘子法 那些年学过的高数
    【转】几款网络仿真软件的比较
    正则表达式30分钟入门教程 ——堪称网上能找到的最好的正则式入门教程
    并发编程详细整理
    高并发通信模型NIO
    Java并发编程的艺术笔记(九)——FutureTask详解
  • 原文地址:https://www.cnblogs.com/dpf-learn/p/6108972.html
Copyright © 2011-2022 走看看