变量的细节和数组

来源:互联网 发布:开源的app源码 编辑:程序博客网 时间:2024/05/07 16:39

IOS学习第10天

深入变量的细节

1.局部变量是存在”栈区”的,栈区的地址是从高到底分配的

2.存储数据的时候,数据是以二进制的补码形式存储的,高位存储在高地址,低位存储在低地址

3.变量的地址:是指最低位所在的内存的地址

4.取变量的地址:&变量名 打印地址:printf(“%p\n”,&变量名)

  • 垃圾值的由来

    1.如果定义了一个局部变量,但并没有初始化一个值,则这个局部变量中存储的则是一个垃圾值

    2.如果定义了一个全局变量,但没有初始化一个值,则系统会自动为全局变量赋值0

  • int类型的修饰符

字节数 占位符 可表示的数的范围 int 4 %d short int 2 %hd long int 8 %ld long long int 8 %lld unsigned int 4 %u unsigned short int 2 %hu unsigned long int 8 %lu unsigned long long int 8 %llu

数组

数组中存储的是具有相同类型的确定个数的变量

  • * 为元素赋值的注意点*

1.为元素赋值的时候,赋值的数据类型要和元素的类型一致

2.为元素赋值的时候,下标不能月结,如果下标月结,就会产生难以预料的结果

3.声明数组的时候,必须要指定数组的长度

4.数组的长度一般是常量,也可以是变量或者是表达式

int len = 4int a[len];

5.数组的长度不能使小数,不能是负数

6.数组的长度可以使1,也可以是0,但是没有意义

  • 数组元素的默认值和初始化
1.声明一个数组却没有为数组的元素赋值,那么他里面的每一个元素都是一个垃圾值2.关于数组元素的初始化:    1>定义的同时初始化:静态初始化        "注意:使用这种方法初始化 数组的长度就不能用变量        int nums[5] = ...//        1)int nums[3] = {1,2,3}//指定长度全部初始化        2)int nums[] = {1,2,3,4}//不指定长度全部初始化        3)int nums[5] = {1,2}//指定长度 部分初始化        //奇葩初始化        4)int nums[5] = {[0] = 10,[3] = 50}        只要是静态初始化,那么其中如果某些元素没有初始化,他的默认值0    2>先定义后初始化: 动态初始化        只有一种方式:挨个赋值,如果有某些元素没有赋值 那么默认值是垃圾值    int nums[5];        nums[0] = 10;3.要将数组中的所有元素初始化为0,怎么办?    int nums[10] = {0};4.这么赋值行不行?    int nums[6];    nums = {1,2,3,4,5,6};    int num = 0;    scanf("%d",&num);    int arr[num];//这样不会报错    int num = 0;    scanf("%d",&num);    //C99中 数组的长度 不能是变量    //xcode不彻底    int arr[num] = {0};//这样回报错why??    ```* 数组的遍历

int a[数组的长度];
for(int i = 0;i < 数组的长度; i++)
{
printf(“%d “,a[i]);
}
printf(“\n”);

* **数组在内存中的存储形式和数组的地址**1.数组在内存中也是从高字节向低字节申请"连续"的(数组长度 * 每一个元素的字节数)个字节空间2.数组的地址 == 数组中最低字节的地址 == 数组中下标为0的元素的地址 == 数组中下标为0的最低字节的地址 == 数组名**数组名就是数组的地址*** **查找数组中是否存在该元素**

int key = 50;

int nums[] = {13,12,343,45,635,46,756,8};int len = sizeof(nums)/sizeof(nums[0]);int flag = 1000;for( int i = 0;i < len;i++){    //取出每一一个元素    if(nums[i] == key){        //找到了        printf("找到了!\n");        flag = 9999;        break;    }else{

// printf(“meizhaodao\n”);
//因为找没找到,只有到循环结束之后才知道
}
}

//循环结束 判断找没找到的第一种方式

// if(i == len){
// printf(“没找到”);
// }
////循环结束 判断找没找到的第二种方式
if(flag == 1000){
printf(“没找到”);
}
“`

0 0
原创粉丝点击