当前位置: 首页 > news >正文

游戏网站建设一条龙数字营销课程

游戏网站建设一条龙,数字营销课程,那个网站做图片好看,seo技术秋蝉一.为什么需要数组 1.解决大量同类型数据的存储/命名/使用问题 2.模拟现实世界:如1维数组可以模拟1条直线,2维数组可以模拟1个平面二.1维数组 1.如何定义1个1维数组: < avar>和&< avar>的区别参见:https://blog.csdn.net/zj490044512/article/details/8635376…

一.为什么需要数组

1.解决大量同类型数据的存储/命名/使用问题
2.模拟现实世界:如1维数组可以模拟1条直线,2维数组可以模拟1个平面

二.1维数组
1.如何定义1个1维数组:
< avar>和&< avar>的区别参见:https://blog.csdn.net/zj490044512/article/details/86353764

<type> <avar>[<n>]={<a1>...<an>};//会为这n个变量分配连续的(虚拟)内存空间,但分配的物理内存中不一定连续//C语言中数组的本质是1个常指针(不能修改数组指向的地址)//也可以使用const关键字将数组定义为常变量(这样就不能修改数组指向的地址处的数据)//等号右边的列表称为"初始化列表"//参数说明:type:数组中元素的数据类型//可为普通变量使用的任何类型,如int/int*avar:数组的名字//该参数的值是avar[0](即a1)的内存地址//avar的数据类型是<type>*n:数组中元素的个数a:数组中的各个元素//数组中所有元素的数据类型和占用的字节数都必须相等//实例:
int a[5]={1,2,3,4,5};
float b[3]={1.1,2.2,3.3};
char c[4]={'a','s','A','3'};//注意:字符数组中元素必须为char,即必须被'...'包裹
printf("%d",sizeof(c));//结果:4//为数组中的元素分配的内存空间是连续的:
int a[5]={1,2,3,4,5};
printf("%d,%d,%d,%d,%d\n",&a[0],&a[1],&a[2],&a[3],&a[4]);
//结果:6487536,6487540,6487544,6487548,6487552
//用于识别数组元素的数字称为下标(Subscript)/索引(Indice)/偏移量(Offset),即第2条语句中的0/1等

2.数组的初始化:

//完全初始化:
int a[5]={1,2,3,4,5};//不完全初始化:未被赋值的元素的值默认为0或空格
int b[5]={1,2,3};
printf("%d\n",b[4]);//结果:0
char c[5]={'a','b'};
printf("%c\n",c[5]);//结果: (有1个空格)//未初始化:所有元素的值都是垃圾值或空格
int d[3];
printf("%d\n",d[2]);//结果:31
char e[3];
printf("%c\n",e[2]);//结果: (有1个空格)//清零:所有元素都被赋值为0
int f[3]={0};
printf("%d\n",f[1]);//结果:0
  • 几种错误写法:
//只有定义数组时才能给整体赋值://只有在定义数组时[...]中的值才代表元素个数,其他时候都表示索引
int a[5];
a[5]={1,2,3,4,5};//错误
int b[3]={1,2,3};
b[3]={3,2,1};//错误
int c[2]={0,1};
c={1,2};//错误//不能给不在范围内的元素赋值:
int d[3]={1,2,3};
d[10]=100;//错误//把1个数组复制1份:
int e[5]={1,2,3,4,5};
int f[5];
f=e;//错误,[Error] assignment to expression with array type//因为数组的变量名代表的是其中第1个元素的内存地址
for (int i=0;i<5;++i) {f[i]=e[i];//正确
}

3.其他操作:

//排序:以冒泡排序为例
#include <stdio.h>void sort(int* avar,int len) {int i,j;for (i=0;i<len-1;++i) {for (j=0;j<len-i-1;++j) {if (avar[j]>avar[j+1]) {int t=avar[j];avar[j]=avar[j+1];avar[j+1]=t;}}}
}int main(void) {int a[6]={10,2,8,-8,11,0};sort(a,6);int i;for (i=0;i<6;++i) {printf("%d ",a[i]);//结果:-8 0 2 8 10 11}printf("\n");
}//####################################################################################################################//求最大/小值:以求最大值为例
#include <stdio.h>int max(int* avar,int len) {int i,m=avar[0];for (i=1;i<len;++i) {if (avar[i]<avar[i+1]) {if (avar[i+1]>m) {m=avar[i+1];}} else if (avar[i]>m) {m=avar[i];} }return m;
}int main(void) {int a[6]={-22,11,1,10,8,0};int m=max(a,6);printf("%d\n",m);
}//####################################################################################################################//倒置:
int main(void) {int a[7]={1,2,3,4,5,6,7};int i=0,j=6,t;while (i<j) {t=a[i];a[i]=a[j];a[j]=t;i++;j--;}for (i=0;i<7;i++) {printf("%d ",a[i]);//结果:7 6 5 4 3 2 1}return 0;
}//####################################################################################################################//查找:查找数组中为指定值的第1个元素
#include <stdio.h>int find(int* avar,int len,int val) {int index;for (index=0;index<len;++index) {if (avar[index]==val) {return index;}}return -1;
}int main(void) {int a[10]={1,4,3,2,11,-2,3,0,-9,8};int index=find(a,10,3);if (index==-1) {printf("No such element\n");} else {printf("index=%d,value=%d\n",index,a[index]);//结果:index=2,value=3}return 0;
}//####################################################################################################################//插入://####################################################################################################################//删除:

4.通过输入赋值:

#include <stdio.h>int main(void) {char m[5];scanf("%s",m);//输入:wwe//m本身就是数组首元素的地址,故不应加&printf("%s\n",m);//结果:wweprintf("%c\n",m[0]);//结果:w
}

三.多维数组
1.如何定义1个多维数组:

<type> <avar>[<n1>][<n2>]...;//为2维数组时,相当于1个矩阵,n1为行数,n2为列数//注意:<type> <avar>[<n1>][<n2>]是1个包含n1个元素的数组,其中每个元素都是1个包含n2个元素的数组//参数说明:n1,n2...:沿各维度的元素数//实例:
int a[2][3];

2.初始化:

//方法1
<type> <avar>[<n1>][<n2>]...={<a1>...<a(n1×n2×...)>};//参数说明:a1,a2...:所有元素(总共应为n1×n2×...)//实例:
int a[2][3]={1,2,3,4,5,6};注意:如果初始化列表中的元素过少,会按a[1][1]...a[1][n],a[2][1]...的顺序初始化
直到初始化列表中的值用完,剩下的值设为0或空格////方法2:
<type> <avar>[<n1>][<n2>]={{<a11>,<a12>...<a1n2>},{<a21>,<a22>...<a2n2>},...{<an11>,<an12>...<an1n2>}//最后1行没有逗号
};//参数说明:aij:指定位置处的元素//实例:
char b[3][3]={{'a','b','c'},{'d','e','f'},{'g','h','i'}
};
printf("%c\n",b[1][2]);//结果:f

3.一些说明:

严格来说,不存在多维数组,因为内存是1维线性的
1个n维数组应被看做1个所有元素都是n-1维数组的1维数组

四.索引
1.通过索引取值:

<avar>[<x1>][<x2>]...//参数说明:avar:数组的名字x:第x个元素(编号从0开始)//实例:
int a[5]={1,2,3,4,5};
int x;
for (x=0;x<5;x++) {printf("%d\n",a[x]);//结果:1 2 3 4 5
}
printf("%d\n",a[100]);//结果:0(未初始化)
char c[4]={'a','s','A','3'};
int y;
for (y=0;y<4;y++) {printf("%c\n",c[y]);//结果:a s A 3
}
printf("%d\n",c[100]);//结果:0
int b[2][3]={1,2,3,4,5,6};
int i,j;
for (i=0;i<2;i++) {for (j=0;j<3;j++) {printf("%d ",b[i][j]);//结果:1 2 3 4 5 6}
}

2.通过索引赋值:

<avar>[<x>]=<val>//参数说明:其他参数同 四.1val:指定元素的新值int f[3]={1,2,3};
printf("%d,%d\n",f[1],f[2]);//结果:2,3
f[2]=0;
printf("%d,%d\n",f[1],f[2]);//结果:2,0

3.关于索引越界:
该问题参见:https://q.cnblogs.com/q/51671/

C语言不检查索引是否越界(不过有的编译器会发出警告),以提高运行速度
索引越界的问题在C标准中未被定义,结果取决于编译器//索引即使越界,有时仍能得到正确结果:
int a[5]={1,2,3,4,5};
printf("%d\n",a[5]);//结果:3
a[5]=10;
printf("%d\n",a[5]);//结果:10
//这时,a其实是使用了没有分配给自己的内存//但是,结果常常不可预测:
int b[5]={1,2,3,4,5,6};
printf("%d,%d\n",b[2],b[5]);//结果:3,0
//同时有警告:[Warning] excess elements in array initializer
//          [Warning] (near initialization for 'b')

五.动态数组
参见 动态内存分配 部分

六.字符串

C语言中没有可以直接存储多个字符的数据类型,需要通过字符数组来完成该功能:
char <str>[<n>][={'<char1>','<char2>'...}];
char <carray>[<n>][="<str>"];//参数说明:darray:指定数组名n:指定数组长度char:指定数组成员str:指定该字符串为数组的内容
http://www.lbrq.cn/news/2567323.html

相关文章:

  • 旅社网站怎么建立如何做好一个品牌推广
  • 自己怎么做网站购买空间东莞企业网站排名优化
  • 网站轮播图教程优化营商环境的意义
  • 网站点击赚钱怎么做跨国网站浏览器
  • 免费个人logo设计seo 最新
  • 怎么自己做网站qq域名购买哪个网站好
  • 成都网站营销seo电话快排seo软件
  • 极速在线网站免费个人网站怎么建立
  • 网站平台建设合作协议友情链接官网
  • 阿里巴巴外贸批发网seo教程自学
  • 没技术怎么做网站百度竞价排名商业模式
  • 烟台网站制作公司百度做广告怎么收费
  • 网页游戏网站排名前10名长沙做网站的公司有哪些
  • 饰品公司网站建设策划书网站关键词排名优化软件
  • 没有网站可以做cpa广告么潍坊今日头条新闻最新
  • 微网站建设资讯百度推广方式
  • 东莞做棋牌网站建设网站的seo如何优化
  • 网站积分解决方案网址大全名称
  • 上海新闻网首页优化服务公司
  • win7 iis 新建网站福州网seo
  • 做产品代理上哪个网站好希爱力
  • 数据推广是干什么的卢镇seo网站优化排名
  • 南昌哪里可以做电商网站百度广告推广平台
  • 智能网站开发工具seo和sem
  • 网站怎么添加百度商桥电商培训视频教程
  • 可以做请柬的网站互联网推广平台有哪些
  • 网站建设背景怎么写海外推广解决方案
  • 服务器如何做网站南宁市优化网站公司
  • iis怎么查看网站的域名巨量算数数据分析入口
  • wordpress防镜像seo关键词优化要多少钱
  • 数字化生产管理系统设计
  • Python编程基础与实践:Python基础数据类型入门
  • 噪声对比估计(NCE):原理、演进与跨领域应用
  • ubuntu 镜像克隆
  • Vue3中Markdown解析与渲染的完整解决方案:从安全到性能优化
  • OSPF笔记整理