第八章:数组

第八章:数组:

1.数组的基本操作:

   1.数组也是一种复合类型数据类型,它由一系列相同类型的元素组成。

   2.定义数组int count[4],整个数组占了4个相邻的整数的存储空间,方括号的4表示数组的长度,而数组元素是从0开始的,count[i]位于从数组开头跳过4*i个字节的存储位置,这个数组下标的表达式不仅可以表示存储位置的值,也可以表示存储位置本身。

   3.使用数组下标不能超出数组的长度范围,发生访问越界时程序可能并不会立即崩溃,而执行到后面某个正确的语句时却有可能突然崩溃。如:出现段错误

   4.数组也可以像结构体一样初始化,未赋初值的元素也是用0来初始化,如果定义数组的同时初始化它,出可以不指定数组的长度。

   5.通过循环把数组中的每个元素依次访问一遍,在计算机术语中称为遍历。

   6.数组不能相互赋值,也不能用数组类型作为函数的参数或返回值,当数组名作右值使用时,数组名做右值使用时,自动转换成指向数组首元素  801.c

2.数组应用实例:统计随机数802.c

   1.#define 定义一个常量,实际上编译器的工作分为两个步骤,先是预处理,然后才是编译,用gcc 的-E选项可以看到预处理之后,编译之前的程序

   2.预处理器做了两件事, 一是把头文件在代码中展开,二是将#define 定义的标识符替换成它所定义的数值

3.字符串

   1.字符串末尾有一个字符’\0’表求字符串结束。

   2.字符串的字面值是只读的,不允许更改。

 Char c = “hello,world.\n”[0];

  但 “hello,world.\n”[0]=’a’就是错误的。

   3.字符串字面值还有一点和数组名类似,做右值使用时自动转换成指向首元素的指针。

 4.字符数组也可以用一个字符串字面值来初始化

1.Char str[10] = “hello”等同于乎char str[10] = {‘h’,’e’,’l’,’l’,’o’,’\0’} 后面四个元素没有指定,自动初始化为了0,即’\0’字符

如果用于初始化的字符串字面值比数组还长,这种情况编译器会给出警告,,如果要用一个字符串字面值准确地初始化一个字符数组,最好是不指定数组的长度。

Char str[]=”hello,world.\n”

   2.printf函数的格式化字符串中可以用%s表示字符串的占位符,特别是字符串保存在数组中时,用%s来打印就很有必要了

       Printf(“string:%s\n”,str);  803.c

 5.多维数组

       1.Scanf函数

1.Scanf(“%d”,&man)这个调用功能是等待用户输入一个整数并回车,这个整数会被scanf函数保存在man这个整形变量里,如果用户输入合法(输入的确实是整数而不是字符串),则scanf函数返回1,表示成功读入一个数据。

2.Scanf也可以用%c、%f、%s等转换说明,如果在传给scanf的第一个参数中用了%d、%f或%c表示读入一个整数、浮点数或字符,则第二个参数的形式应该是&运算符加一个相应类型的变量名称,表示读进来的数存在这个变量里,如果在第一个参数中用%s读入一个字符串,则第二个参数应该是数组名,数组名前面不加&,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值