用 for 用来遍历枚举元素根本是不可行的,直接上代码:
#include<stdio.h> enum DAY{MON=1, TUE, WED, THU=7, FRI, SAT, SUN}; int main() { enum DAY day; for(day=MON;day<=SUN;day++) { printf("day=%d\n",day); } return 0; }
得到的结果:
day=1 day=2 day=3 day=4 day=5 day=6 day=7 day=8 day=9 day=10
所以用来遍历是不可行的,它只是给 day 赋值了一个整数类型的值。
指针与数组名的区别
指针:也是一个变量,存储的数据是地址。
数组名:代表的是该数组最开始的一个元素的地址。
int a[10]; int *p; p = &a[0] // 可以写成 p = a;
区别:指针是一个变量,可以进行数值运算。数组名不是变量,不可以进行数值运算。
对于数组的初始化需要注意以下几点:
1) 可以只给部分元素赋值,当 { } 中值的个数少于元素个数时,只给前面部分元素赋值。例如:
int a[10]={12, 19, 22 , 993, 344};
表示只给 a[0]~a[4] 5 个元素赋值,而后面 5 个元素自动初始化为 0。
当赋值的元素少于数组总体元素的时候,不同类型剩余的元素自动初始化值说明如下:
我们可以通过下面的形式将数组的所有元素初始化为 0:
int nums[10] = {0}; char str[10] = {0}; float scores[10] = {0.0};
由于剩余的元素会自动初始化为 0,所以只需要给第 0 个元素赋值为 0 即可。
2) 只能给元素逐个赋值,不能给数组整体赋值。例如给 10 个元素全部赋值为 1,只能写作:
int a[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
而不能写作:
int a[10] = 1;
#include <stdio.h> int main() { int a[2] = {1,2}; printf("a = %d\n",a[0]); printf("*(a+0) = %d\n",*(a + 0)); printf("a[1] = %d\n",a[1]); printf("*a = %d\n",*a); printf("*(a+1) = %d\n",*(a + 1)); printf("\n"); printf("a 的地址:%p\n",a); printf("(a+0)的地址:%p\n",(a + 0)); printf("(a+1)的地址:%p\n",(a + 1)); // %p 读入一个指针 printf("\n"); return 0; }
输出结果:
a = 1 *(a+0) = 1 a[1] = 2 *a = 1 *(a+1) = 2 a 的地址:0x7ffe9e227634 (a+0)的地址:0x7ffe9e227634 (a+1)的地址:0x7ffe9e227638
事实上 a[0] 、a[1]...a[i] 代表的都是值,a、(a+0)、(a+1)、(a+i) 代表的是地址;另外这里的 a 代表整个数组的首地址,相当于 a[0] 的地址,而这里 (a+1) 就代表的是 a[0+1] 的地址。
正如文章中提到的:所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素,即是说 (a+i) 就代表的是 a[0+i] 的地址。
数组是一种一次申请多个变量的方法,数组的使用让我们可以在程序中保留多个变量的值,进行处理,例如给定n个学生的成绩,要求有多少学生超过了平均分,代码如下:
#include <stdio.h> //导如输入输出头文件 int main(){ //主函数 int cj[100]={0};//定义数组 int n; int count=0;//定义计数器,统计有多少人达到平均分 scanf("%d",&n); int i=0; //读入数据 for(i=0;i<n;i++){ scanf("%d",&cj[i]); } //对数据进行求和 double sum=0; for(i=0;i<n;i++){ sum+=cj[i]; } //求平均分 double arg=sum/n; //判断有多少人达到平均分; for(i=0;i<n;i++){ if(cj[i]>arg){ count++; } } //输出平均分和人数 printf("平均分为:%0.2f\n超过平均分的人有:%d个\n",arg,count); return 0; }
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
1499C enum(枚举)
用 for 用来遍历枚举元素根本是不可行的,直接上代码:
得到的结果:
所以用来遍历是不可行的,它只是给 day 赋值了一个整数类型的值。
1498C 数组
指针与数组名的区别
指针:也是一个变量,存储的数据是地址。
数组名:代表的是该数组最开始的一个元素的地址。
区别:指针是一个变量,可以进行数值运算。数组名不是变量,不可以进行数值运算。
1497C 数组
对于数组的初始化需要注意以下几点:
1) 可以只给部分元素赋值,当 { } 中值的个数少于元素个数时,只给前面部分元素赋值。例如:
表示只给 a[0]~a[4] 5 个元素赋值,而后面 5 个元素自动初始化为 0。
当赋值的元素少于数组总体元素的时候,不同类型剩余的元素自动初始化值说明如下:
我们可以通过下面的形式将数组的所有元素初始化为 0:
由于剩余的元素会自动初始化为 0,所以只需要给第 0 个元素赋值为 0 即可。
2) 只能给元素逐个赋值,不能给数组整体赋值。例如给 10 个元素全部赋值为 1,只能写作:
而不能写作:
1496C 数组
输出结果:
事实上 a[0] 、a[1]...a[i] 代表的都是值,a、(a+0)、(a+1)、(a+i) 代表的是地址;另外这里的 a 代表整个数组的首地址,相当于 a[0] 的地址,而这里 (a+1) 就代表的是 a[0+1] 的地址。
正如文章中提到的:所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素,即是说 (a+i) 就代表的是 a[0+i] 的地址。
1495C 数组
数组是一种一次申请多个变量的方法,数组的使用让我们可以在程序中保留多个变量的值,进行处理,例如给定n个学生的成绩,要求有多少学生超过了平均分,代码如下: