一维数组

  数组名代表整个数组的时候只有两种情况,sizeof(数组名),这里的数组名表示整个数组。&数组名,这里的数组名表示整个数组。

#include<stdio.h>int main()
{int a[]={1,2,3,4};printf("%d\n",sizeof(a));   //16 a表示数组的首元素,首地址因此用sizeof计算它们的值,就是整个二维数组所占用的内存空间printf("%d\n",sizeof(a+0));      //4 a+0为a[0]的首地址printf("%d\n",sizeof(*a));  //4  首元素大小 就相当于 sizeof(*a)=4 =sizeof(a[0]);printf("%d\n",sizeof(a+1));  //4 从首元素向后偏移一个整型的地址,即第二个元素的地址printf("%d\n",sizeof(a[1]));   //4 a[1]的字节数为4printf("%d\n",sizeof(&a));    //4  &a为数组地址和a即a[0]的地址一样printf("%d\n",sizeof(&a+1));  //4 跳过整个数组 指向数组后面的一个地址printf("%d\n",sizeof(&a[0]));   //4 首元素地址printf("%d\n",sizeof(&a[0]+1));return 0;}

sizeof(a)表示整个数组大小,*a=*(a+0);*a表示数组的首地址,因此sizeof(*a)=4*sizeof(int)为16

总结为一句话,不论是一维数组,还是二维数组,如果直接sizeof数组名,那么大小为整个数组所占用的内存空间,如果计算类似a+0,a+1等数组名进行了偏移运算,那么它就代表指向某个元素的指针

字符数组

#include<stdio.h>int main()
{char arr[]={'a','b','c','d','e','f'};printf("%d\n",sizeof(arr));  //6 整个数组大小printf("%d\n",sizeof(arr+0));  //4首元素地址大小printf("%d\n",sizeof(*arr));   //1首元素大小printf("%d\n",sizeof(arr[1]));  //1第二个元素大小printf("%d\n",sizeof(&arr));  //4数组的地址printf("%d\n",sizeof(&arr+1));//4数组后的地址printf("%d\n",sizeof(&arr[0]+1));//4第二个元素的地址return 0;}

#include<stdio.h>int main()
{char *p="abcdef";printf("%d\n",sizeof(p));//4 a的地址printf("%d\n",sizeof(p+1));//4 b的地址printf("%d\n",sizeof(*p ));//1 解引用指向一个字符大小printf("%d\n",sizeof(p[0]));//1 首地址大小printf("%d\n",sizeof(&p ));//4 p的地址printf("%d\n",sizeof(&p+1));//4 p之后的地址printf("%d\n",sizeof(&p[0]+1));//4 指向b的地址
return 0;
}

二维数组

#include<stdio.h>int main()
{int a[3][4]={0};printf("%d\n",sizeof(a));   //48 a表示数组的首元素,首地址因此用sizeof计算它们的值,就是整个二维数组所占用的内存空间printf("%d\n",sizeof(a[0][0]));      //4 a+0为a[0][0]的首地址printf("%d\n",sizeof(a[0]));  //16  第一行元素printf("%d\n",sizeof(a[0]+1));  //4 第一行的第二个元素地址printf("%d\n",sizeof(a+1));   //4 第二行地址printf("%d\n",sizeof(&a[0]+1));    //4  第二行地址printf("%d\n",sizeof(*a));  //16 第一行printf("%d\n",sizeof(a[3]));   //16 第四行return 0;}

C语言数组的一些运算*a,a+1,a+1,a+0相关推荐

  1. C语言数组和指针的理解_在取地址运算上的操作_指针加减操作_a 和a 的区别

    1.一个实例+理论分析 在了解数组和指针的访问方式前提下,下面再看这个例子: main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); pr ...

  2. 【Python】Numpy基础:数组和矢量运算

    Numpy基础:数组和矢量运算 目录: 文章目录 一 Numpy及其重要性 二 ndarray:一种多维数组对象 1 创建ndarray 2 ndarray的数据类型 3 数组和标量之间的运算 4 基 ...

  3. c语言数组数据用指针查找,c语言数组与指针_指针篇_2011.ppt

    c语言数组与指针_指针篇_2011 指 针 6.2 指针的概念6.3 指针与数组6.4 字符串的指针6.5 指针数组和指向指针的指针;6.2.1 地址与指针的概念 ;指针的概念;内存地址;2.数组与地 ...

  4. c语言 数组指针,C语言数组名及指向数组指针的小结

    相信不少的C语言初学者都知道,数组名相当于指针,指向数组的首地址,而函数名相当于函数指针,指向函数的入口地址. 现在有这样一个问题,如果对数组名取地址,那得到的会是什么呢?很多人立刻会想到:给指针取地 ...

  5. R语言数据对象与运算

    R语言数据对象与运算 笔记整理 2.1 数据对象及类型 R语言创建和控制的实体被称为对象(object) ls()命令来查看当前系统里的数据对象 R对象的名称必须以一个英文字母打头,并由一串大小写字母 ...

  6. [重点]C语言——数组

    数组 文章目录 数组 为什么需要数组? 数组介绍 一个案例,快速了解数组 数组定义和内存布局 (1)数组的定义 (2)数组内存图(重要) (3)访问数组元素 (4)小案例 (5)初始化数组的三种方式 ...

  7. C语言数组指针(指向数组的指针)详解

    数组(Array)是一系列具有相同类型的数据的集合,每一份数据叫做一个数组元素(Element).数组中的所有元素在内存中是连续排列的,整个数组占用的是一块内存.以int arr[] = { 99, ...

  8. 深入浅出C语言:(三)C 语言数组指针(指向数组的指针)

    目录 一.C 语言数组指针(指向数组的指针) 二.C 语言字符串指针(指向字符串的指针) 三.C 语言指针数组(数组每个元素都是指针) 四.二维数组指针(指向二维数组的指针) 五.指针数组和二维数组指 ...

  9. c语言for循环除法运算,C语言入门这一篇就够了

    c语言入门 C语言一经出现就以其功能丰富.表达能力强.灵活方便.应用面广等特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等.C语言也是其它众多高级 ...

最新文章

  1. dos下查看机器端口占用情况
  2. 多次点击android版本出现棒棒糖,android – 为前棒棒糖设备创建循环显示
  3. 63. 不同路径 II(JavaScript)
  4. 构建直接路由模式(DR)的LVS
  5. 大道至简 7、8、读后感
  6. Android编程之LocalBroadcastManager源码详解
  7. vc实现文件的打印--BOOL Print_html(const char *sURL)
  8. 2021-0409梦笔记
  9. [Android]OpenGL绘制2D几何图形
  10. java捕鱼达人代码java捕鱼游戏代码
  11. 深度学习----Tensorflow再命名实体上常用的函数
  12. 如何调用CAD命令行命令?
  13. win10以太网dns服务器未响应,Win10系统dns服务器未响应如何修复?
  14. 使用BERT做中文文本相似度计算与文本分类
  15. 红米note10和红米note9哪个值得买
  16. android 摇晃工具箱
  17. cesium 指南针、比例尺
  18. angular.min.js:80 Error: [$injector:unpr] http://errors.angularjs.org/1.2.9/
  19. Tensorflow API 讲解——tf.estimator.Estimator
  20. iphone编辑过的录音怎么还原_我的天呐,原来iPhone里录音不仅能导出,还能转文字?!...

热门文章

  1. 解决 WIndows,Linux 以及 MacOS 终端无法使用代理的问题
  2. delphi使用sqlite数据库时的中文路径问题
  3. 通过 python-xmp-toolkit 读取图片xmlp信息
  4. weinre调试移动端页面
  5. 如何把导航条做成sitefactory政府版的样子实现动态读取子栏目显示
  6. javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
  7. 【一个实体对象不能由多个 IEntityChangeTracker 实例引用】原因及解决方法
  8. 罚函数法求解约束问题最优解
  9. javaweb 中的过滤器 包装器
  10. mysql binlog日志优化及思路