初始数组1

原创 2018年04月16日 16:46:59

一维数组:

例:

int arr1[10] = {1,2,3};     (下标3~9全为零)

int arr2[] = {1,2,3,4};      (四个元素)

int arr3[5] = {1,2,3,4,5};

int arr4[3] = {'a',98,'c'};

char arr5[] = {'a','b','c'};

char arr6[] = "abcdef";      (七个元素,还有\0)

数组创建,[ ]中必须为一个常量,不能使用变量。(可以进行宏定义,#difine  NUM =10,则可以为arr[NUM])

数组不允许整体赋值:

int main()

{

int arr[10] = {0};

int i = 0;

for(;i<10;i++)

{

arr[i] = i;

}

return 0;

}

数组大小:

int arr[10];


int size = sizeof(arr)/sizeof(arr[0]);

数组在内存中是连续存放的;

所以其地址也是递增的;

1.内存中的每一个内存单元(字节)对应一个地址;

2.在32位的平台上指针的大小是4个字节,64位平台是8个字节。

(8个byte位是一个字节)

一维数组的指针访问:

数组的地址在数值上默认和数组首元素地址相等。

数组的数组名其实是数组首元素的地址,前提条件为,数组做右值,或者做运算符时;单独使用时,含义为整个数组。

(通过对数组名+整数的运算,可以得到数组每个元素的地址)

*(arr + 1) ----arr[1]

&arr[1]----arr+1

二维数组:

int arr[3][4];

把二维数组看做一维数组,不过里面的每一个元素都是一个数组!

二维数组是线性储存的!

arr[0][0]  arr[0][1]  arr[0][2]  arr[1][0]  arr[1][1]  arr[1][2]……

二维数组的指针访问:

#include <stdio.h>

int main()

{

int arr[3][4] = {0};

int *p = &arr[0][0];

int i = 0;

for(;i<3*4;i++)

{

*(p+i) = i;

}

for(i=0;i<3;i++)

{

int j = 0;

for(;j<4;j++)

{

printf("%d“,arr[i][j]);

}

}

return 0;

}

数组的运算:

int a[] = {1,2,3,4};

printf("%d\n",sizeof(a));     16(整个数组)

printf("%d\n",sizeof(a+0));     4(首元素地址)

printf("%d\n",sizeof(*a));      4

printf("%d\n",sizeof(a+1));     4

printf("%d\n",sizeof(a[1]));     4

printf("%d\n",sizeof(&a));     4

printf("%d\n",sizeof(*&a));    16   

printf("%d\n",sizeof(&a+1));    4 (下个数组的地址)

printf("%d\n",sizeof(&a[0]));     4

printf("%d\n",sizeof(&a[0]+1));     4


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



数组元素全部初始化为同一值问题

一:用memset初始化 二:定义数据类型时直接初始化 #include #include using namespace std; int main() { int a[10],b[10],c[1...
  • love20165104027
  • love20165104027
  • 2017年08月14日 17:05
  • 988

从头认识java-4.8 数组的初始化(1)

这一章节我们来讨论一下数组的初始化。1.数组是一个对象。package com.ray.ch01; public class Test { public static void main(Stri...
  • raylee2007
  • raylee2007
  • 2015年10月28日 08:28
  • 2277

[原创]使用memset初始化数组为-1或…

相信很多人使用过memset来初始化数组为-1或0。 这时候数组元素正好是-1或0。 今天看了memset的效率问题后,才想起这是个恰巧。 之前一直以为memset是对每个元素赋值,而实际不是的。 ...
  • wakeupwakeup
  • wakeupwakeup
  • 2016年01月14日 09:10
  • 1986

1:实现堆结构

总时间限制: 3000ms 内存限制: 65535kB 描述 定义一个数组,初始化为空。在数组上执行两种操作: 1、增添1个元素,把1个新的元素放入数组。 2、输出并删除数组中最小的数。...
  • u013487630
  • u013487630
  • 2014年02月10日 11:37
  • 1290

自己对sg函数的小理解

首先定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数。例如mex{0,1,2,4}=3、mex{2,3,5}=0、mex{}=0。 ...
  • tianyuhang123
  • tianyuhang123
  • 2016年12月01日 21:23
  • 271

4-2 数组元素串动 (25分)

一个数组有8个元素,其初始数据为:1 2 3 4 5 6 7 8 要求在不增加数组,也不增加数组的存储单元的情况下,通过移动数组元素将数组变化为:4 5 6 7 8 1 2 3函数接口定义:void ...
  • qq_35550443
  • qq_35550443
  • 2016年11月21日 22:53
  • 299

C++ memset() 只能初始化为0或-1

memset()可以初始化字符数组; memset()可以初始化整数数组,但是初始化的值只能为0或者-1。...
  • mine_soul
  • mine_soul
  • 2017年10月23日 16:39
  • 150

实现堆结构

/* 实现堆结构 查看 提交 统计 提问 总时间限制: 3000ms 内存限制: 65535kB 描述 定义一个数组,初始化为空。在数组上执行两种操作: 1、增添1个元素,把1个新的元素放入数组。...
  • u014391294
  • u014391294
  • 2015年12月08日 18:01
  • 1351

java__给定一个非负整数数组,假定你的初始位置为数组第一个下标。 数组中的每个元素代表你在那个位置能够跳跃的最大长度。 请确认你是否能够跳跃到数组的最后一个下标。

import java.util.Scanner; public class Main { public static void main(String[] args){ ...
  • qq_25554527
  • qq_25554527
  • 2017年03月05日 00:06
  • 736

数组与字符串初始化为空的深入理解

正题 1. 一维数组初始化,可以只给一部分元素赋值,如下 int a[10] = {0,1,2,3,4}; 这样只给前面的5个元素赋值,后5个元素为0。 将char p[8]; 看作是字符...
  • FENGQIYUNRAN
  • FENGQIYUNRAN
  • 2015年04月22日 22:36
  • 5866
收藏助手
不良信息举报
您举报文章:初始数组1
举报原因:
原因补充:

(最多只允许输入30个字)