iOS 复习题(二)(2)

来源:未知 责任编辑:责任编辑 发表时间:2014-01-25 11:34 点击:

  所以ptr实际是a[5]
  但是prt与(&a+1)类型是不一样的(这点很重要)
   所以prt-1只会减去sizeof(int*)

  a,&a的地址是一样的,但意思不一样
    a是数组首地址,也就是a[0]的地址,&a是对象(数组)首地址,
    a+1是数组下一元素的地址,即a[1],&a+1是下一个对象的地址,即a[5].

 

void Func ( char str[100] )  


{ 
 

sizeof(str ) = ?  


} 


void*p = malloc( 100 ); 
sizeof( p ) = ?

这题 很常见了,Func ( char str[100] )函数中数组名作为函数形参时,在函数体内,数组名失去了本身的内涵,仅仅只是一个指针;在失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。Windows NT 32位平台下,指针的长度(占用内存的大小)为4字节,故sizeof( str ) 、sizeof( p ) 都为4。

 

9.用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)

答:#defineSECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 

我在这想看到几件事情: 

 #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 

懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。

意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 

如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 

 

10.写一"
标准"宏MIN ,这个宏输入两个参数并返回较小的一个

答:#define MIN(A,B) ((A) <= (B) ? (A) : (B)) 

这个测试是为下面的目的而设的: 

标识#define在宏中应用的基本知识。这是很重要的,因为直到嵌入(inline)操作符变为标准C的一部分,宏是方便产生嵌入代码的唯一方

法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 

三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比 if-then-else 更优化的代码,了解这个用法是很重要的。 懂得在宏中小心地把参数用括号括起来  我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?  least = MIN(*p++, b); 

结果是:

((*p++) <= (b) ? (*p++) :(*p++))

这个表达式会产生副作用,指针p会作三次++自增操作。

11.数组和指针的区别

(1)数组可以申请在栈区和数据区;指针可以指向任意类型的内存块

(2)sizeof作用于数组时,得到的是数组所占的内存大小;作用于指针时,得到的都是4个字节的大小

(3)数组名表示数组首地址,值不可以改变,如不可以将++作用于数组名上;普通指针的值可以改变,如可将++作用于指针上

(4)用字符串初始化字符数组是将字符串的内容拷贝到字符数组中;用字符串初始化字符指针是将字符串的首地址赋给指针,也就是指针指向了该数组

 

12.static的作用

(1)函数体内static 变量的作用范围为该函数体,不同于 auto 变量,该变量的内存只被分配一次,

因此其值在下次调用时仍维持上次的值;

(2)在模块内的static 全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;

(3)在模块内的static 函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Lexical or Preprocessor Issue 'xxx.h
  • ios学习笔记(二)xcode 4.3.2下实现基本交互
  • ios版本的helloworld
  • iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
  • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
  • IOS类似iphone通讯录TableView的完整demo【附源码】
  • UITableView一些方法
  • [iPhone中级]iPhone团购信息客户端的开发 (二)
  • iphone(object-c)内存管理(1)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1