c语言笔记-数组(C语言数组详解)

1,数组的格式 :

存储类型 数据类型 数组名 [ 元素个数 ] = {元素1,元素2.‘’};

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

意义:在栈区开辟一个大小为12字节的区域(数组大小=sizeof(数据类型)*元素个数)

格式分析:存储类型:数组中元素的存储位置,默认在栈区开辟空间(被auto修饰)

数据类型:数组中每一个元素的类型

数组名:当前该片连续空间的名称,见名知义

元素个数:当前数组中的元素总个数,注意该个数不能写变量。一般该元素个数用常量代替(宏常量居多)

eg:

#include
int main()
{
auto char str[5]={'a','b','c','d','e'};
printf("%cn",*(str+1));
printf("%pn",&str[0]);
printf("%cn",str[2]);
return 0;
}

2,数组元素名代表数组首元素的地址,元素的下标从0开始计算,即:str = &(str[0])

3, 当数组在{}之内定义时,意味着是一个局部数组,当不赋值时,其值为随机值

4, 当数组在{}之外定义时,意味着是一个全局数组,当不赋值时,其值为0

5,当数组满初始化时,元素会原样输出

6, 当数组部分初始化时,剩余未被赋值的元素默认补0

7,可以利用6的特性,实现清空一个数组:int arr[5] = {0};

8,对于整形数组而言:一般通过循环完成元素的赋值以及输出

9,冒泡排序:

#include
int main()
{
int i=0,j=0,k=0;
int a[]={33,5,1,3,22};
for(i=0;i<4;i++)//需要比较的数一共有5个,每一个数都要和后边的数做比较,所以需要比较四轮。
{
for(j=0;j<(4-i);j++)//当第一轮比较完确定第一个数值是最小的,即数组a[0],已经是最小的无需再比,下一次比 较时,只需要比较后边4个数,所以比较3次机即可。
{
if(a[j]
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;//转换a[i]和a[i+1]的值
}
}
}
for(int l=0;l<5;l++)//循环打印出排序后的数组顺序。
{
printf("%dn",a[l]);
}
return 0;
}

10,数组初始化:

不建议不初始化数组,因为未初始化的数组,内部空间的数据是杂乱的。

部分初始化:

格式::

数据类型 数组名[len]={元素初始值};

提示:元素的初始值个数小于len

注意:部分初始化数组的方式,初始化部分数据会被赋予{}内的初始值,未被初始化的部分

将会被赋值为0

省略长度初始化

格式:

数据类型 数组名[ ]={元素初始值};

提示:省略长度初始化就是在定以数组的时候不指定数组的长度,数组的长度由后面数组的

初始化元素个数决定

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

全部初始化

格式:

数据类型 数组名[len]={元素初始值};

提示:元素的初始值个数等于len

11,不同变量的初始值

int : 0

float 0.0

double 0.0

char 空

指针 NULL

字符串:

12,随机数和数组的使用

随机数 srand
time - get time in seconds
#include
time_t time(time_t *tloc);
time_t *tloc:指针,直接赋值为NULL(空)
time_t :接收获取到的秒数
time的功能是获取当前时间距离1970-1-1 00:00:00的秒数值
rand, srand - pseudo-random number generator
#include
int rand(void);
void srand(unsigned int seed);
unsigned int seed:种子值
The rand() function returns a pseudo-random integer in the range 0
to RAND_MAX(2147483647) inclusive
The srand() function sets its argument as the seed for a new
sequence of pseudo-random integers to be returned by rand().

随机数的产生:

1、通过time获取时间种子

2、通过srand设置时间种子

3、通过rand返回随机数

13,选择排序(交换下标)

#include
#include
#include
int main()
{
int i=0,j=0,tmp=0,min=0;
time_t times=0;
int num[10]={0};
times=time(NULL);
srand(times);
for(i=0;i<10;i++)
{
num[i]=rand()%100;
}
for(i=0;i<10;i++)
{
printf("num[%d]=%d ",i,num[i]);
}
printf("n");
for(i=0;i<10;i++)
{
min=i;
for(j=i+1;j<10-i;j++)
{
if(num[min]>num[j])
{
min=j;
}
}
if(min!=i)
{
tmp=num[min];
num[min]=num[i];
num[i]=tmp;
}
}
for(i=0;i<10;i++)
{
printf("num[%d]=%d ",i,num[i]);
}
printf("n");
return 0;
}

14,二维数组,

格式:

数据类型 数组名[row][column];

row:行数

column:列数

注意:在定以二维数组的时候行可以省略但是列不能省略

如:

int num[2][3];

行可以省,列不能省

方式一:不初始化

数据类型 数组名[row][column];

不对二维数组的成员进行赋值操作

方式二:部分初始化

数据类型 数组名[row][column]={数组元素};

数组元素的个数小于 row*column

方式三:省略行长度初始化

数据类型 数组名[ ][column]={数组元素};

行数等于数组元素的个数除以column

假如初始化中数组的元素个数为8个,列数为3

行位:8/3+1

未初始化的数为0

方式四:全部初始化

数据类型 数组名[row][column]={数组元素};

数组元素的个数等于 row*column

提示:列不能省

c语言笔记-数组(C语言数组详解)

版权声明:本文内容由互联网用户投稿发布,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2211788188@qq.com 举报,一经查实,本站将立刻删除。如需转载请注明出处:https://www.wptmall.com/a/article/28840

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注