C学习笔记20170814

来源:互联网 发布:oracl数据库 编辑:程序博客网 时间:2024/06/07 00:49
一.其它
1.十进制             %d
2.二进制    0b/0B    
3.八进制    0        %o/%O
4.十六进制  0x/0X    %x/%X
5.进制的转换
  十进制转二进制 除2取余倒着排
  二进制转十进制 每一位乘以对应位上的幂数相加
  八进制转二进制 一个八进制转换为三个二进制
  二进制转八进制 三个二进制位转换一个八进制
  十六进制换二进制 一个十六进制转为四个二进制
  二进制转十六进制 四个二进制转为为一十六进制
6.sizeof(类型) 返回类型长度的字节数、
  sizeof(int)=4


二.数组的定义 
1.int i[50];
2.int[0]=20;
3.int i[5]={1,2,3,4,5}
4.int i[]={1,2,3,4,5}
5.int i[5]={1,2}//其他元素为0
6.int i[5]={[3=1,[2]=9]}//其他元素为0
7.定义数组同时初始化时不可以用变量作为数组长度
8.int i[m]={2,4,5}//错


三.数组的细节
1.数组的数组变量名本身就是一个内存地址
2.取到下标为index的元素地址 print("%p\n",&i[index]) 
3.数组的地址为第一个元素的地址
4.数组是一块连续的存储空间
5.随着元素索引的增加存储空间的地址也一次增加
6.数组越界导致约错了对象 或 程序崩溃


四.数组与函数
1.基本数据类型作为函数参数传递时,为值传递
2.数组作为函数参数传递时为地址传递,因为数组名本身就为一个地址
3.指针是用来存放地址的变量,指针占用8个字节的存储空间
4.当数组作为参数传递时,会被自动给转换为指针类型
5.当作为参数传递时同时把数组的长度传递过去


五.冒泡排序
1.规则:两两比较大的下沉小的上浮(就像起跑)

2.代码:

int nums[5] = { 4, 7, 4, 3, 9 };int count = sizeof(nums) / sizeof(int);for (int i=0;i<count;i++){    for (int j = 0; j < count-i-1; j++)    {         if(nums[j]>nums[j+1])         {              int temp = nums[j];              nums[j] = nums[j+1];              nums[j + 1] = temp;           }     }} 

注意:只是学习笔记