本帖最后由 wy911011 于 2015-7-24 20:41 编辑
第八天 哈哈,已经学到第八天了,感觉好充实有木有~
short 2字节 %hd int 4字节 %d,%i long 8字节 %ld long long 8字节 %lld(解决32位机器问题 unsigned %u 查看int类型占用的内存空间 int b=1; //最小负数 int b1=b<<31; //最大正数 int b2=(b<<31)-1;)
计算机默认是有符号的 signed unsigned 表示一个无符号的数(正数的取值范围会扩大一倍) unsigned short b=0-1; 一个字节的范围 0-127 用作常见的字符acsii码
数组:一组具有相同数据类型的数据的有序的结合 一维数组: 所有的元素都不是数组
数组定义的注意事项 1 数组的长度可以是一个常量,也可以是常量表达式 2 数组名命名规则:严格按照标示符命名规范 3 数组名不能和其他变量同名 4 数组名不可以是变量 5 数组的长度可以使用宏定义 6 定义数组时,还可以定义普通变量
一维数组初始化 //定义的同时初始化 //全部初始化 int a1[3]={1,2,3}; int a2[]={4,5,6}; //部分初始化 int a3[3]={a3[0]=7,a3[1]=8}; int a4[3]={9,10}; //先定义后初始化 int a5[3]; a5[0]=11; a5[1]=12; a5[3]=13;
对于数组来书,一旦有元素被初始化,其他元素都被赋值0
数组存储方式 计算机会给数组分配一块连续的存储空间
数组名代表数组的首地址,从首地址位置,依次存入数组的第一个、第二个元素
每个元素占用相同的字节数、并且元素之间地址是连续的
数组名是一个常量,存储数组的首地址
数组的越界会出现未知的错误
数组用作函数参数有两种形式 1)一种是把数组元素作为实参使用
例:void printfNum(int n){ if (n>0) { printf("%d",n); }else{ printf("0"); } }
int main(int argc, const char * argv[]) { int a[5]={1,2,-3,-1,5}; for (int i=0; i<5; i++) { printfNum(a); } } 形参和实参之间是‘值传递‘ 2)一种是把数组名作为函数的形参和实参使用 形参和实参之间是‘地址传递’ 例:float avg(float score[5]){ float sum=0.0f; for (int i=0; i<5; i++) { sum+=score; } return sum/5;
}
int main(int argc, const char * argv[]) { float f1[5]={66.66,77.77,88,88,99.99}; float avg1=avg(f1); printf("%.2f",avg1); return 0; }
数组名作为函数的参数的注意点 1)如果类型不一致,会导致错误 2)形参的数组长度和实参数组的长度可以不一致 3)形参数组的长度可以不写
冒泡代码实现:
#import <Foundation/Foundation.h>
void maopao(int arr[],int len){ int temp; for (int i=0; i<10; i++) { for (int j=0; j<len-1-i; j++) { if (arr[j]>arr[j+1]) { temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } }
}
int main(int argc, const char * argv[]) { int a[10]={1,3,5,6,8,22,33,45,77,198}; int i; maopao(a, 10); for (i=0; i<9; i++) { printf("%d\t",a); }
return 0; }
|