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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Day09 笔记

1,格式控制符的意义:

   printf函数的内部去如何读取变量中的数据

   %d:从这个变量的地址开始 读取4个字节的数据 并以10进制显示
   %c:从这个变量的地址开始 读取1个字节的数据 并显示其代表的字符数据

   如果我们要正确的读取出存储在变量中的数据,就要使用对应的格式控制符来读取。


2,总结格式控制符

   整数:
   %d %o 八进制 %x 16进制
   %hd %ld %lld %u %hu %lu %llu

   浮点数:
   %f %lf

   字符型:
   %c

   地址:%p


3,数组的定义

   语法:int arr[5]

   长度可以是变量 可以是整数 可以是宏 不能是负数 小数
   也可以是0 代表不能存储数据 这么做没有意义

   数组元素没有赋值的时候,元素是有值的 是一个垃圾值 不是0


4,数组的初始化

   int arr[2];
   arr[0] = 1;
   arr[1] = 2;

   int arr[2] = {1,2};

   int arr[]={1,2,3,4,56}

   int arr[3] = {10};
   第一个赋10 其他赋0

   int arr[4] = {[1] = 100}
   第二个符100 其他赋0


5,数组的地址

  arr[5] 数组名arr中存放的事数组的地址
  数组名 == 数组的地址 == 数组中第0个元素的地址 == 数组中最低字节的地址


6,数组的长度

  int len = sizeof(数组名)/sizeof(数组类型);
  例如:int len = sizeof(arr)/sizeof(int);
  也可以: int len =  sizeof(arr)/sizeof(arr[0]);

  sizeof 拿到的字节数 是 unsigned long 类型 所以输出时用 %lu


7,参数的值传递

   函数 实参传递给形参的是值
   所以在函数内部修改形参变量的值 不会影响实参的值


8,数组与函数

   数组也可以作为函数的参数
   调用的时候 实参需要时同类型的数组 在函数内部遍历

   1),当数组作为函数的参数传递的时候 会丢失数组的长度
           所以无法在函数内部泗洪sizeof去计算数组长度;
           sizeof(arr) 得到的永远都是8.

           原因:当数组作为函数的参数的时候,在声明这个函数的数组参数的时候
           时声明了一个指针变量来存储数组的地址变量
           为形参数组传值的时候,不是将整个数组传递过去,
           而是将实参数组的地址传递给了形参变量
           所以 参数数组不是一个数组 而是一个用来存储数组地址的一个指针变量
           所以sizeof(数组名)永远都是 等于 8.

           解决:void test (int arr[5],int length)

   2),当函数的参数是一个数组的时候,长度可以不写,
           因为根本没有用 根本不会去创建数组

   3),当函数的参数是一个数组的时候
           在函数的内部修改数组元素的值,实参数组的元素的值也会跟着一起修改
           因为在传递的时候传递的是地址 所以实参数组和形参数组时同一个数组。


4 个回复

倒序浏览
这水灌的杠杠的!
回复 使用道具 举报
这笔记,好的不要不要的,,,,
回复 使用道具 举报
sincere126 发表于 2016-5-18 10:10
这水灌的杠杠的!

你懂我!!!
回复 使用道具 举报
总结的不错啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马