看《C专家编程》一书,看到数组与指针并不相同一章,遂做了一段测试:

代码:

#include <stdio.h>
#include <stdlib.h>int main(void)
{char *p = "abcdefghijklmn";printf("%p\n%p\n%p\n",&p,&p[0],p);return 0;
}

输出:

可以看到这样的输出,结果很显然:

第一个输出的值,0028FF24,应该是符号表中p的地址。

第二个值,00403000,是地址0028FF24中储存的值,也就是指针p所指向的地址。

第三个值,可以看到和第二个值是一样的,也就是说字符串指针p所指向的内容的起始地址为00403000,同样也验证了之前所说的。

在此总结一下指针与数组的区别:

(1)指针保存数据的地址(准确的说应该是起始地址),而数组保存数据。

(2)指针间接访问数据,首先获取指针的内容(该内容就是实际数据的地址),然后以之为地址,从这个地址提取数据。如果指针有一个下标[i],那就把指针的内容加上i作为地址,从中提取数据。而数组则直接访问数据,a[i]是简单的以a+i为地址取得数据。

(3)指针用于动态结构数据,而数组用于存储固定数目且数据类型相同的元素。

(4)指针相关的函数有malloc与free,而数组隐式分配和删除。

(5)指针一般指向匿名数据,而数组自身即为数据名。

指针和数组都可以通过定义时使用字符串常量进行初始化,但是两者是有区别的:

在ANSI C中,初始化指针时所创建的字符串常量通常是只读的,无法修改;而由字符串常量初始化的数组是允许修改的,其中的单个字符可以在以后改变。

转载于:https://www.cnblogs.com/chrischeng/p/3253031.html

C语言中指针和数组的区别相关推荐

  1. C语言中指针与数组的区别,C语言 指针与数组的详解及区别

    C语言 指针与数组的详解及对比 通俗理解数组指针和指针数组 数组指针: eg:int( *arr)[10]; 数组指针通俗理解就是这个数组作为指针,指向某一个变量. 指针数组: eg:int*arr[ ...

  2. 国2c语言中指针与数组的赋值运算,C语言到汇编-指针与数组2

    本章剩下的内容主要有: 1.指针与数组 & 地址算术运算 2.字符指针与函数 3.多维数组 & 指针与多维数组 4.指向函数的指针 每个内容举一个例子,第一个例子: int a[10] ...

  3. c语言中减号算一个字符吗,C语言中指针的加减运算

    char arr[3]; printf("arr:\n%d\n%d\n%d\n", arr, arr + 1, arr + 2); char *parr[3]; printf(&q ...

  4. 初学者对C语言中指针的爱恨情仇

    C语言中指针和数组的爱恨情仇 文章目录 C语言中指针和数组的爱恨情仇 一.前言 二.为什么学指针 三.说明 四.跟我一起学 (一)C语言中的*和& 1.C语言中为什么存在&和* 2.& ...

  5. c语言中指针中 - 和 。的区别?

    c语言中指针中 -> 和 .的区别? 例子1:比如有如下结构 typedef strut node{ int data;   strut node * next; } ListNode; Lis ...

  6. c语言多维指针,C语言中多维数组和多维数组指针的应用

    最近开始好好学习编写CFD程序了,由于计算过程中所涉及的网格节点较多(一维最容易,二维就比较麻烦了,三维的还没有尝试自己动手编程呢),每个节点上都有若干个参数,包括速度,压力,温度,密度等,并且这些参 ...

  7. 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  8. c语言字符串加减_C语言中指针的介绍

    C语言中指针的介绍 指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指针变量可以表示各种数据结构:能很方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编 ...

  9. c语言中*用于指针,关于C语言中指针的理解

    关于c语言中指针的一些理解 这几天在看任哲老师编写的嵌入式实时操作系统uC/OS原理与应用一书,第二章讲到指针的用法,我发现自己有些地方有疑问,就重新看了关于c指针的知识.同时也对指针有了一定的理解. ...

最新文章

  1. java旅游系统项目经验_谁能跟我介绍一下Java 项目经验,刚进入这个行业。
  2. faster-rcnn网络
  3. 【car】为什么后轮驱动的电动小摩托后轮打滑时制动前轮能起到较好的防打滑效果(ESC、ESP、VSA车身稳定系统)
  4. 50个jQuery插件可将你的网站带到另一个高度
  5. 杭电 hdu 2040
  6. linux内网穿透局域网frp(实现有网就能访问你的局域网台式机服务器)
  7. WebBrowser的Cookie操作(与CookieContainer的关系)
  8. TCP/IP TELNET SSH
  9. 什么叫死锁?死锁案例?死锁必须满足哪些条件?如何定位死锁问题?有哪些解决死锁策略?哲学家问题?
  10. 数据 3 分钟 | 余承东正式发布GaussDB(for openGauss)、浪潮宣布云溪数据库ZNBase开源...
  11. 抓眼球包装设计样机模板,色彩秘籍都在这里了!
  12. eclipse java读取文件_在eclipse完成对Java_web项目里面资源文件的读取
  13. go兼容java_兼容dubbo的微服务框架dubbogo;dubbo的完整go语言实现
  14. 掘金网无极ip代理软件IOS版如何下载安装?
  15. 【算法】路径规划中的Dijkstra(狄克斯特拉)与A星算法
  16. matlab函数的线性化,[原创]非线性Simulink模型线性化方法讨论
  17. 22个最常见的Python3 包
  18. flask序列化框架之marshmallow详解
  19. CSS溢出文字使用省略号表示
  20. win10升级补丁_Win 10 暂停更新及回滚方法

热门文章

  1. PHP地图规划骑行路径,骑行路线规划
  2. linux vim看最低,linux vim
  3. android 自定义域名,Android 懒加载优化
  4. php中怎么让图片没有缓存,关于项目中图片缓存的问题
  5. winxp制作服务器,你要知道的WinXP服务器操作系统安装的方法
  6. 怎么看电脑系统是win几_做设计,用win系统 还是苹果MAC电脑更好 (PS举例)
  7. mysql 禁止存储过程_为什么阿里巴巴禁止使用存储过程?
  8. notepad++查看16进制文件
  9. MySQL基础总结,认真看完这篇就够了!!!
  10. ssh 框架搭建出现错误