A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wy911011 中级黑马   /  2015-7-24 20:40  /  537 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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;
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马