在学习C语言中我们会发现这样一种情况:

#include<stdio.h>

Int main()

{

Int ar[10];

printf(“%p\n”,ar);

printf(“%p\n”,&ar);

Printf(“%p\n”,&ar[0]);

}

运行上面这一段代码之后发现:三个运行结果都是一样的。对于以上的现象我把它称为C语言的三值合一。

虽然运行结果是一样的,但是其本质是不同的:

ar访问的是数组名的值,而这个值恰好是首元素的地址

&ar[0]对数组的首元素求地址

&ar是求整个数组空间的的地址(恰好是首元素的地址)

数组名ar代表的是整个数组,它的值恰好是首元素的地址,当用sizeof(ar)求其大小时,可以得出sizeof(ar)=40.

&ar[0]则指明求数组中首元素的地址。

&ar则是对整个数组空间求地址,它的地址恰好就是首元素的地址。

我们经常听到说&ar,ar就是首元素的地址,这种说法是不正确的,它只能说明他们的值与首元素一样,但并不首元素的地址。相信经过以上的讲解,我们能够清楚地分辨他们。

C语言中的三值合一的更多相关文章

  1. C语言中的三字母词

    C语言中的三字母词(trigraph) 在ANSI C标准中,定义了9个三字母词(trigraph),三字母词就是几个字符的序列,合起来表示另一个字符.三字母词使C语言环境可以在缺少一些必需字符的字符 ...

  2. R语言中的特殊值 NA NULL NaN Inf

    这几个都是R语言中的特殊值,都是R的保留字, NA:Not available  表示缺失值   用 is.na() 来判断是否为缺失值 NULL:表示空值,即没有内容  用 is.null() 来判 ...

  3. [Swift实际操作]八、实用进阶-(2)Swift语言中的三种消息传递模式

    本文将通过响应按钮的点击事件,来演示Target-Action消息传递机制,该机制主要用于响应用户的界面操作.打开创建的空白项目.然后在左侧的项目导航区,打开视图控制器的代码文件:ViewContro ...

  4. C语言中数据类型取值范围的计算的理解与总结

    c语言中,数据类型有short,int,long,char,float,double,然后除了浮点型只有 有符号数(signed)外,其他的数据类型都分为有符号(signed)和无符号(unsigne ...

  5. 常量的三种定义方式和static在c语言中的三种修饰

    c语言的常量在执行期间为固定值,在定义后无法被修改常量可以是任何的数据基本类型,可以为整形,浮点常量,字符和字符串常量1,使用const关键字2, 使用宏定义3,使用枚举常量 枚举: #include ...

  6. [C] C语言中的布尔值

    C不具备显示的布尔类型,所以使用整数来代替,规则是:零是假,任何非零值皆为真. 反过来说,如果逻辑表达式为真其值一定为真,若逻辑表达式为假其值一定为零.

  7. C语言中打印返回值

    demo: ----return :返回值------------------ int mosquitto_username_pw_set(struct mosquitto *mosq, const ...

  8. C语言中强制数据类型转换(转)

    原文地址不详 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128-127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0-255(有些 ...

  9. C语言中函数和指针的參数传递

    近期写二叉树的数据结构实验.想用一个没有返回值的函数来创建一个树,发现这个树就是建立不起来,那么我就用这个样例讨论一下c语言中指针作为形參的函数中传递中隐藏的东西. 大家知道C++中有引用的概念,两个 ...

随机推荐

  1. Long型070000L前面0去掉比较大小,token,mysql innodb,properties,switch匹配空字符串对象

    public class TestJava { //定义获取资源文件 private static final ResourceBundle bundle = initBundle(); privat ...

  2. 再深入一点ajax

    1.建立兼容性强的XHR对象有那么复杂么? 看过一些书,书上为了写针对低版本IE和其他非IE浏览器需要写一大串兼容函数,典型的就是JS高级程序上的. 可是在现实开发中,为了兼容IE6/IE7,只需要这 ...

  3. DBCP参数介绍

    参数分步介绍1)数据库连接相关    username="v10"    password="v10"    driverClassName="ora ...

  4. Android上使用MP3格式录制声音

    0. 下载LAME 并解压缩 http://lame.sourceforge.net/download.php http://sourceforge.net/projects/lame/files/l ...

  5. 解决xshell连接linux总是异常断开的问题?

    找到etc下面的profile文件,可以看到有下面一行: TMOUT=;export TMOUT 注释掉即可解决. #TMOUT=;export TMOUT

  6. weka平台下手动造.arff的数据

    若数据为 sunny,hot,high,FALSE,nosunny,hot,high,TRUE,noovercast,hot,high,FALSE,yesrainy,mild,high,FALSE,y ...

  7. 修改webapp底图

    从webapp目录可以看出地图归mapManager处理,所以在MapManager.js中找关于加载地图的方法, 很容易在里面找到showMap方法: 下面有另一个方法_showMap方法,查看定义 ...

  8. Android 广播(内部类)

    1.广播定义在一个单独的文件中 源码: public class MessageReceiver extends BroadcastReceiver{ @Override public void on ...

  9. AlarmManager.RTC和ELAPSED_REALTIME的区别

    AlarmManager.RTC,硬件闹钟,不唤醒手机(也可能是其它设备)休眠:当手机休眠时不发射闹钟. AlarmManager.RTC_WAKEUP,硬件闹钟,当闹钟发躰时唤醒手机休眠: Alar ...

  10. DWR3.0 dwr 返回值(数组,集合,Map)

    首先导入项目所需要的包,如下:dwr.jar,commons-logging-1.0.4.jar,版本可以调整 1.web.xml<?xml version="1.0" en ...