以前已经都提过了, c语言中,数组名就是1个指向数组第1个元素地址的指针.
           如数组char a[] = "bcd";
           数组名a 就是指向数组a[]的第1个元素a[0]的地址
           所以*a==a[0]=='b'

当我们定义1个新的指针p,并给它赋值时:
           p=a;

一般来讲我们认为他们p与a是等价的
          因为同样有: *p==p[0]='b'
          p[i]=a[i]

    但是有特殊情况, 要将数组名a看成1个特殊的指针.

例如函数sizeof , 这是取1个对象(变量or常量) 的内存占用空间
          举个例子:
          定个1个字符数组c:
          char c[]="abcdefghikjlmn";

那么sizeof(c) 得出的是数组c的所占内存空间,也就是c所有元素占的长度(包括最后的隐藏元素'\000').
         所以
         sizeof(c) == 15   //因为c是字符数组, 每1个字符占的长度是1字节(byte)啦

跟着定义1个指针p,并赋值:
         p=c;
        
         而size(p) 是求p本身所占的内存空间, 也就是1个内存单位
         sizeof(p) == 8  // 64位gcc, 32位gcc是4, 因为对于每1个内存单位来讲,64位的内存单位长度是32位的一倍.

那么数组c 是不是容易都是特殊指针呢. 不是, 当他作为1个参数被传入时, 系统会将这个参数转为一般化指针:
 
         例如我定义1个新函数:
         long int getlen(char* a){
               return sizeof(a);
         }

执行 getlen(c) 时, 实际是也会执行size(c), 但是因为这时数组名c作为参数已经被转为一般的函数, 所以getlen函数里面的sizeof(c)求的是c指针本身所占的内存空间, 也就是8啦.

见如下例子:

输出:

下面这个是相同代码在32位gcc环境下的输出:

C语言中, 有些时候数值名并不与指针等价.相关推荐

  1. c语言中5l是数值或字符常量,C语言练习题-选择题(带答案)

    以下为<C语言练习题-选择题(带答案)>的无排版文字预览,完整格式请下载 下载前请仔细阅读文字预览以及下方图片预览.图片预览是什么样的,下载的文档就是什么样的. C语言练习题-选择题(带答 ...

  2. c语言中5l是数值或字符常量,C语言中什么叫做正确的数值或字符常量?

    用一对单引号将一个字符括起表示合法的字符常量.例如'a'.数值包括整型.浮点型.整型可用十进制,八进制,十六进制.八进制前面要加0,后面由0到7八个数表示. 在C语言中,字符常量有以下特点: 字符常量 ...

  3. 关于java和c语言中,变量重名问题

    请看下面的两段代码: #include <iostream> #include <cstdio> #include <cstring> using namespac ...

  4. C语言中的sizeof中的数组和指针

    1.引子 今日在看动态规划的0-1背包问题,看完后还是打算自己写着试试,毕竟实践才能出真知嘛.动态规划的结果是个二维数组dp,我copy书上的例子进行初始 memset(dp,0,sizeof(dp) ...

  5. C语言中void cpy,关于C/C++ void指针,使用void指针拷贝int 数组

    在C/C++中void代表的就是无类型或者为空,作为void *p这样的定义则说明这个指针 只包含了指针位置而不包含指针的类型,一般的指针包含2个属性指针位置和类型, 其中类型就能判断出其长度. 借用 ...

  6. C语言中int占几个字节,指针占几个字节,由什么决定呢?

    int占几个字节 今天心血来潮,想要了解一下C语言中各整型占用几个字节. 先上代码测试两个环境: #include<stdio.h> #include<stdlib.h>int ...

  7. c语言中val是什么函数,val(val是什么意思)

    有这么一个C语言程序 : int i; long val; for(i=0;i 在C语言中Val是一个将由数字符号(包括正负号.小数点)组成的字符型数据转换成相应的数值型数据的函数,语法格式是Val( ...

  8. c语言中 调用函数除函数名外,【单选题】在 C 语言中 , 调用函数除函数名外 , 还必须有 ( ). (10.0分) A. 函数预说明 B. 实际参数 C. ( ) D. 函数返回值...

    [单选题]在 C 语言中 , 调用函数除函数名外 , 还必须有 ( ). (10.0分) A. 函数预说明 B. 实际参数 C. ( ) D. 函数返回值 更多相关问题 下列关于IMOECDIS性能标 ...

  9. 在python语言中可作为源文件后缀名的是_在Python语言中,可以作为源文件后缀名的是( )_学小易找答案...

    [多选题]在2013清单计价中,其他项目界面,包括( ) [多选题]在分部分项工程清单下,添加一项定额的方法有( ) [单选题]下列各项中,关于企业无法查明原因的现金溢余,经批准后应贷记的会计科目是( ...

最新文章

  1. 某内存池中的指针用法
  2. 有没有记录程序运行中所有的函数调用堆栈的工具?
  3. 第五周项目一-三角形类雏形(1)
  4. 自己对Delphi中使用正则表达式的研究心得
  5. of type std::bad_cast: std::bad_cast
  6. codevs 1004 四子连棋 BFS、hash判重
  7. 东莞电子计算机学校,东莞市电子科技学校
  8. vs2010 rdlc 报表及报表控件
  9. Linux C高级编程——网络编程之API(5)
  10. 一年月份大小月口诀_怀胎十月,为啥我只能算出9个月?
  11. 【registry】registry合并带spring boot项目第一弹
  12. oracle 11g 卸载  客户端卸载
  13. js table多层嵌套_只会console.log?8个高效调试js的console方法
  14. thinkphp中的__DIR__ __ROOT__ __APP__ __MODULE__ APP_PATH LIB_PATH MODULE_PATH 等是在哪里定义的?...
  15. Windows 系统(包含Server) 官方镜像下载--阿里云盘
  16. 解决mac系统大小写切换异常问题
  17. 一元二次方程的简单解法
  18. 中医五行学说详细资料
  19. 详谈parameterType与resultType的用法
  20. 【荐藏】代谢组学分析系列

热门文章

  1. MySQL—视图(二)
  2. python:将32位的16进制数据以二进制/hex/binary的形式写入到文件
  3. [gic]-linux和optee的中断处理流程举例(gicv3举例)
  4. KPROCESS 结构体属性介绍
  5. 2020-11-7( servlet)
  6. 【网络安全】简要分析下Chrome-V8-Issue-762874
  7. BFS求无权图的单源最短路径-邻接矩阵存储
  8. C. Kefa and Park【树的遍历】
  9. 2.3.3 进程互斥的硬件实现方法
  10. 手机数控模拟器安卓版_车床模拟器2手机版下载-车床模拟器2游戏 v2.5.0安卓版_5577安卓网...