数组的初始化和二维数组、指针与数组

1、数组的初始化,比较简单,实例程如下:

#include<stdio.h>
# define M 12
int main(void){
int days[M]={31,28,31,30,31,30,31,30,30,31,30,31};
int i;
for(i=0;i<M;i++)
printf("Months %d has %2d days.\n",i+1,days[i]);
return 0;
}

运行结果如下:

2.未经初始化的数组:

实例程序;

#include<stdio.h>
# define M 12
int main(void){
int N[M];//未经初始化的数组
int days[M]={31,28,31,30,31,30,31,30,30,31,30,31};
int i;
for(i=0;i<M;i++)
//printf("Months %d has %2d days.\n",i+1,days[i]);
printf("%d  %d\n", i,N[i]);
return 0;
}

运行结果:

由此可知,在初始化之前,数组元素的值是不确定的,编译器使用的数值是存储单元中已有的数值,上面的输出结果是不一定的。

3、在初始化数组的时候,编译器很机智,即使你给的元素数目小于或者为给定数组大小,编译器会自动识别,不够的话,它会自己用0代替。但是当初始化列表中有太多对的数目时,编译器会提醒错误。too many initializers太多初始化。如下删去几个元素,则结果:

#include<stdio.h>
# define M 12
int main(void){
int N[M];//未经初始化的数组
int days[M]={31,28,31,30,31,30,31,30};
int i;
for(i=0;i<M;i++)
printf("Months %d has %2d days.\n",i+1,days[i]);
//printf("%d  %d\n", i,N[i]);
return 0;
}

4、二维数组,举个栗子:float rain[5] [12] 首先,rain[5]表示一个包含五个元素的数组,至于每个元素的情况,需要查看声明的其余部分。剩余的便是float【12】,表示12浮点数的 数组。总之,该二维数组表示:rain具有5个元素,并且每个元素都是包含12个数值的数组。

具体理解画图如下:也算是挺明了的了。

5、指针和数组

指针提供了用来一种用来使用地址的

时间: 2024-10-04 10:16:29

数组的初始化和二维数组、指针与数组的相关文章

Android 在资源文件(res/strings.xml)定义一维数组,间接定义二维数组

经常我们会在资源文件(res/strings.xml)定义字符串,一维数组,那定义二维数组?直接定义二维数组没找到,可以间接定义. 其实很简单,看过用过一次就可以记住了,一维数组估计大家经常用到,但是二维数组应该比较少用,因为只能间接定义二维数组. 数组的定义: 数组就是一次性定义相同数据类型的一组变量数组定义. 数组的特点: 1.数组是相同数据类型的元素的集合. 2.数组中的各元素是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起. 3.数组元素用整个数组的名字和它自己在数组中的顺序位

数组合并函数,二维数组相同字段合并到一起。

一般从数据库中提取数据时,会遇到各种各样类型的数据,要求也不尽相同.自己这两天开发的时候遇到一个很纠结的问题,如下: 比如一个二维数组是这样的: Array ( [0] => Array ( [uid] => 231 [username] => 123456 [active] =>aaaa [transfer] =>1111 ) [1] => Array ( [uid] => 231 [username] =>123456 [active] => bb

c#(6)——数组的应用和二维数组

人类思维--计算机逻辑思维逻辑思维--代码实现 写书法:描红——临摹——碑贴——自成一体——草 复习:数组:一维,二维,多维一维:豆角.连续,同一类型.定义:数据类型[] 数组名=new 数据类型[长度]{.,.,.,.};赋值:数组名[下标] = 值取值:数组名[下标]灵活运用:与for循环的结合应用.1.求最大值,最小值.2.求总和,平均.3.随机(生成下标)抽值. 数组的应用:(一).冒泡排序.1.冒泡排序是用双层循环解决.外层循环的是趟数,里层循环的是次数.2.趟数=n-1:次数=n-趟

求数组中最大子数组的和(二维环)

成员:林彦汝.张金 (这次角色调换,我主要负责代码复审,代码测试计划:张金负责程序分析,代码编程.) 题目: 返回一个二维整数数组中最大子数组的和 要求: 输入一个二维整形数组,数组里有正数也有负数. 二维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值. 思路: 在求一维环形数组和二维数组最大子数组的和的基础上,我们将两个的方法综合起来求解关于二维环形数组.假设原二维数组a[3][3]为 1 -2 3 1 -3

一维数组与二维数组的拼接与二维数组增加行

一维数组与二维数组的拼接 numpy有很多的拼接函数.比如hstack和vstack等.网上又很多这样的总结帖子.但是两个数组能拼接的条件就是得满足两个数组的维度要相同.所以二维数组和一维数组拼接的时候需要使用newaxis将一维数组转化为二维数组,也就是shape从(3,)转化为(3,1). a = np.array([1,2,3]); b = np.array([[1],[2],[3]]); #将一维数组a转化为二维数组 a = a[:,np.newaxis]; c = np.concate

一维数组、二维数组用数学公式初始化以及二维数组的行坐标可省

<span style="font-size:14px;">#include<stdio.h> #include<stdlib.h> //二维数组赋值 void show2() { int a[3][4]; int k=0; for(int i=0;i<3;i++) { for(int j=0;j<4;j++) { a[i][j]=i*4+(j+1);//数学公式 赋值 // a[i][j]= ++k;//与上面效果一致 printf(&

静态初始化一个二维数组并将二维数组排序并输出

基本思想:将二维数组存入到一个新的一维数组中,将一维数组排序后,再加以格式控制输出 class work03 { public static void main(String[] args) { int a[][]={ {11,15,32,21},{2,3},{4,6,5}}; int length=0; int k=0; for(int i=0;i<a.length;i++){ for(int j=0;j<a[i].length;j++){ length++;//求二维数组元素个数 } k+

tyvj P1716 - 上帝造题的七分钟 二维树状数组区间查询及修改 二维线段树

P1716 - 上帝造题的七分钟 From Riatre    Normal (OI)总时限:50s    内存限制:128MB    代码长度限制:64KB 背景 Background 裸体就意味着身体. 描述 Description “第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵.第二分钟,L说,要能修改,于是便有了将左上角为(a,b),右下角为(c,d)的一个矩形区域内的全部数字加上一个值的操作.第三分钟,k说,要能查询,于是便有了求给定矩形区域内的全部数字和的操作.第

hdu1081 DP类最长子段和(二维压缩+前缀和数组/树状数组计数)

题意:给出一个 n * n 的数字矩阵,问最大子矩阵和是多少. 由于和最长子段和问题类似,一开始想到的就是 DP ,一开始我准备用两个循环进行 DP ,对于每一个 (i,j) ,考察(i - 1,j)与(i,j - 1), dp 值代表以该点为右下角的最大矩阵和,同时记录下这个矩阵的左上角坐标,状态转移时通过将原和最大矩阵通过补边推到当前和最大矩阵.但是其实这种做法有一个明显的问题,就是转移时,补上边后 dp 值相同怎么办,dp 值相同而矩阵不同的话会影响到下一次状态转移后补上的矩阵的情况,从而