美文网首页上嵌学习笔记
培训第七天----数组

培训第七天----数组

作者: 穹蓝奥义 | 来源:发表于2016-12-14 18:05 被阅读9次

昨日回顾

运算符优先级

括号成员第一,全体单目第二,乘除余三,加减四,
位移五,关系六,等与不等排第七,
位与异或位或八九十,逻辑或与十二十一,
条件(?:)高于赋值,逗号运算最低!

C语言的三大结构

顺序结构、分支结构(if...else,switch...case)、循环结构while()、do{}while()、for(;;)。

分支结构:

if...else 配对问题,else总是与离他最近的if配对,if可以没有else。

循环结构:

(1)for(表达式1;表达式2;表达式3) //一般循环不超过10层。

执行顺序:
    (A)表达式1
    (B)表达式2,若表达式2成立,则(C);不成立,则(E)
    (C)执行循环体即{}里的内容;
    (D)表达式3,回到下一轮(B)
    (E)结束循环

今日内容

一、数组

(1)数组定义

DataType ArrayName[size];

DataType: 数据类型,int,char,float,double等等。
ArrayName: 数组名。
size: 数组的大小或数组下标,必须时常量表达式。
[]: 下标运算符。
下标是从0开始到number-1。

int arr[5];
arr 数组名
5 数组大小即数组元素的个数
int 数组元素的类型

(2)数组的初始化

int arr[3] = {1,2,3}; 
int arr1[3] = {1,3};
int arr2[3] = {1};
int arr3[3] = {[2]=3};     //给具体位置数据赋值,不建议使用!!
int arr4[] = {1,2,3,4}   //不建议!
Xint arr5[] = {}           //Error!

 int num1 = 0;  //OK
 int num2;  //OK

 int arr[5];
 arr[5] = {1,2,3,4,5}   //Error!此行的arr[5]视为一个变量
     
 int arr5[]     //数组若要初始化,必须在定义的同时初始化!!不要先定义后初始化!!

以下方法不可以!!编译器报错!!

a.int n = 6;
b.int arr[n];

c.int m;
  scanf("%d",&m);
  int buf[m]={1,2,3};

宏定义:
#define M 5 //通篇,用5去替换M。格式可以是表达式,函数,数字等等
//被替换的通常为大写

(3)数组元素的访问

arr[0],arr[1]...
使用下标形式;

 int arr[3];

arr [2] 访问第二个元素。
arr [4] 访问第五个元素。
遍历数组元素,逐个访问

(4)数组的存储

数组也是一种数据结构,数组中的元素顺序存储;
数组中每个元素的类型都相同;

(5)数组地址问题

 int arr[5];
 arr:     0x00000   //数组名,整个数组起始地址,也代表首个数组元素的地址 
 &arr:    0x00000   //整个数组地址,数组首地址 
 &arr[0]:  0x00000    //首元素地址
 arr+1:     0x00004   //第二元素地址  即&(arr+1) 
 &arr[0]+1:0x00004     //第二元素地址和上面一致,偏移一个元素大小
                          地址偏移sizeof(arr[0])个字节
 &arr+1:   0x00014     //整个数组地址末尾,即下个数据起首,
                          偏移的量为sizeof(arr)个字节,偏移一个整数组大小

(6)数组元素的赋值

(7)

char arr[16]={'h','e','l','l','o'}; //存储hello
char buf[16]={"hello"};     //大括号可以不要,
                                  存储hello\0

数组不能越界访问!!

(8)数组名不能和变量名重复!!!

(9)清空数组元素

方法一:

    for(i=0;i<n;i++)
    a[i]=0;```
>方法二:
```c
<stdlib.h>
<string.h>
memset(a, 0, sizeof(a))```



#二、二维数组(基于矩阵)
例

          11    12  13
          21    22  23
          31    32  33
格式

    DataType ArrayName[行下标][列下标];
    DataType ArrayName[][列下标];      //行下标可以省
####(1)初始化:
     int arr[3][3] = {1,2,3};   
     int arr1[3][3] = {{11,12,13},{21,22,23},{31,32,33}};//相当于3个一维数组  
                                                         存储也是顺序按行存储
     int arr2[][3] = {11,12,13,21,22};
**注释:**

    (1)//.....: 单行注释,可独占一行,也可跟执行语句之后,
                     但//后的内容不被编译执行,一般放在所需注释行之上或之后。
    (2)/*.........*/:   成对出现注释大段代码即注释代码块。
    
    (3)#if 0        // 0 改为 1 就可执行至else间的语句。 
         #else
         ...
         #endif     //多用于测试代码
复制笔记然后排版用时约30min。
问题上课已问,已解决。

相关文章

  • 培训第七天----数组

    昨日回顾 运算符优先级 C语言的三大结构 顺序结构、分支结构(if...else,switch...case)、循...

  • 点亮阅读的星星

    ——共读《飞翔的教室》第七天 捧着书, 翻开页, 开始我们《飞翔的教室》第七天的阅读。 今天整整一天的培训,我们都...

  • 莫名的失落

    今天是外出培训的第七天,也是离家的第七天。中午趁着孩子上学时间给家里打了个电话! 孩子四岁半了,从出生到现在,第一...

  • 哪个是学霸的专属座位?

    今天已经是培训的第七天,还有两天就培训完,正好到国庆放假。 今天早上西南大学的胡航教授讲的是深度学习,讲得很精彩,...

  • 哪个是学霸的专属座位?

    今天已经是培训的第七天,还有两天就培训完,正好到国庆放假。 今天早上西南大学的胡航教授讲的是深度学习,讲得很精彩,...

  • 培训第七天

    今天公司有幸请到了著名讲师郭城老师给我们进行《高效能人士七个习惯》课程讲解。郭城老师主要讲解了前三个习惯积极...

  • 培训第七天

    又是新的一周的开始,我们有幸能听到郭老师讲解的高效能人士的七项修炼,郭老师通过幽默风趣的方式给我们讲解了思维...

  • 培训第七天

    现在感觉都已经麻木了,每天起床、听课、吃饭、睡觉、听课、吃饭、看纪录片、回寝室、睡觉! 上午是职场礼仪,总的感觉就...

  • 2017.12.02

    今天是C语言培训第八天,上午学习了很多新知识。 主要详细讲了字符串。字符数组可以做整型数组能做的功能,字符数组还...

  • 杨开琴特种兵第十三天学习心得

    1月20日 阴 不知不觉,特种兵培训已进入倒计时第七天了,原本以为这2...

网友评论

    本文标题:培训第七天----数组

    本文链接:https://www.haomeiwen.com/subject/qqzimttx.html