• C专家编程 第4章 令人震惊的事实:数组和指针并不相同 4.5 数组和指针的其他区别


    /*数组和指针的其他区别
     *     指针                                                        数组
     *保存数据的地址                                        保存数据 
     *间接访问数据,首先取得指针的内容,    直接访问数据,a[i]只是简单以a+i为地址取得数据 
      作为地址,然后从这个地址提取数据
      如果指针有一个下标[i],就把指针
      的内容加上i作为地址,从中提取数据 
     *通常用于动态数据结构                            通常用于存储固定数目且数据类型相同的元素
     *相关的函数为malloc(), free()                   隐式分配和删除
     *通常指向匿名数据                                   自身即为变量名
     */
    /*数组和指针都可以在它们的定义中用字符串常量进行初始化。但底层的机制却不相同
     *定义指针时,编译器并不为指针所指向的对象分配空间,它只是分配指针本身的空间,除非在
     *定义的的同时赋给指针一个字符串常量进行初始化。
     */
    /*为p和“breakfruit"都分配了内存空间*/ 
    char *p = "breadfruit"; 
    /*在ANSI C中,初始化指针所创建的字符串常量被定义为只读。如果试图通过指针修改这个
     *字符的值,程序就会出现未定义的行为。
     */ 
    float *pip = 3.14; /*错误!无法通过编译*/ 
    /*注意只有对字符串常量才是如此,不能指望为浮点数之类的常量分配空间*/ 

    /*数组也可以用字符串常量进行初始化*/ 
    char a[] = "gooseberry";
    /*与指针相反,由字符串常量初始化的数组是可以修改的。
     *其中的单个字符在以后可以改变。
     */ 
    例如: 
    strncpy(a, "black", 5); 

  • 相关阅读:
    修炼k8s+flink+hdfs+dlink(六:学习k8s-pod)
    前端周刊第十四期
    B站基于Iceberg+Alluxio助力湖仓一体项目落地实践
    Linux 基础IO
    perl下批量修改远程服务器密码
    python3安装opencv
    【Unity】线性代数基础:矩阵、矩阵乘法、转置矩阵、逆矩阵、正交矩阵等
    (Hexagon_V65_Programmers_Reference_Manual(13)
    java web学习
    vue中的网络请求
  • 原文地址:https://blog.csdn.net/weixin_40186813/article/details/126074115