漫步IOS--数组、sizeof和函数形参
来源:互联网 发布:node forever 编辑:程序博客网 时间:2024/05/27 20:57
首先声明,该系列博客记录的重点是C、OBject-C(以后简称OC)相对于Java的不同,还有一些我在编码练习过程中遇到的问题还有解决方法,而并不是一份流水式的完全的学习笔记。还有一些内容是C和OC中特有的东西等。
调用的时候:
一、数组
在C中数组的定义只有一种语法: 类型 名称[大小] 例如 : int Arr[10];没有第二种定义方法,对于他的赋值是和Java一样的。
二、SizeOf函数
在C中对于数组的大小,没有Java中的.size()方法,不能直接去获得一个数组中元素的数量。但是可以利用sizeof函数来求得。sizeof(Object)的功能是求得Object的长度。那么方法就来了,用数组整体的长度除以数组中单个元素的长度即可得数组中元素的个数。在代码中即是
int size = sizeof(sA)/sizeof(sA[0]);
另外,值得注意的是,在方法中对于形参数组长度的获取。在一个方法中对于通过形参传过来的数组进行sizeof的时候会报错,如下图。
三、函数形参
说到函数的形参,C语言中形参虽然接收后的值是地址,但是在方法中对形参进行赋值这个过程是单向的。即形参可以得到实参的数值,但是对于形参的赋值并不会反向传递回实参。这点和Java是有区别的。个人猜测C的处理机制应该是在为函数分配资源空间的时候也为形参分配了空间,并将实参的数值拷贝进去,然后将形参的地址记录下来供函数内的语句进行调用。至于是不是这么做的和这么做的原因为何有待探究。在以后有时间会想办法进行验证的。需要郑重一提的是数组形参。
void sort(int arr[],int size){ int re[size]; for (int i = 0; i < size; i++) { for (int j = i+1; j < size; j++) { if (arr[i] > arr[j]) { arr[i] += arr[j]; arr[j] = arr[i] - arr[j]; arr[i] = arr[i] - arr[j]; re[i] = arr[i]; } } }}
调用的时候:
sort(arr1,5);上面的是一个选择排序方法,下面的是一个调用。这时候你觉得数组arr1的值会被成功排序吗?答案是会的。这里要注意的是,在调用的时候,是把数组arr的地址作为参数传进方法内的,所以最后形参获得的数值也是和实参等值的arr的地址,再对其进行排序的时候,自然就是对arr的数据进行的直接操作了。所以这里的数组会被排序。
0 0
- 漫步IOS--数组、sizeof和函数形参
- 漫步IOS--数组函数
- 漫步IOS--字符串类NSString和NSMutable常用函数
- 漫步IOS--引用计数函数和深浅拷贝
- 数组传参 和 sizeof
- 漫步IOS--指针细节2:*与&、指针初始化问题、指针数组和数组指针
- 漫步IOS--日期类及其函数
- 关于C++中sizeof()、数组长度和函数传参的一点心得
- sizeof 指针和数组
- sizeof, strlen, 指针和数组作为函数参数
- 漫步IOS--函数帧、内存分配函数、内存管理函数
- sizeof函数求数组长度
- sizeof(数组名)和sizeof(指针)
- sizeof(数组名)和sizeof(指针) .
- sizeof(数组名)和sizeof(指针)
- sizeof(数组名)和sizeof(指针)
- sizeof 数组名 和 sizeof 指针
- sizeof(数组名)和sizeof(指针)
- 在ios应用中,获取uuid,并删除uuid中的-符号
- 关于eclipse工具栏无法找到ADT中AVD,Android Lint等工具图标的解决办法
- Windows系统默认用户句柄与GDI句柄限制
- 黑马程序员—Object c 基础知识
- 入门新手如何系统地学习数据挖掘
- 漫步IOS--数组、sizeof和函数形参
- 不允许创建临时变量,交换两个数的内容
- SAP ABAP编程 在string类型A字符串中查询匹配string类型B字符串
- tuxedo 常见问题总结
- 创建型模式之原型模式(prototype)
- struts2标签学习笔记--转载。
- oracle——DBLINK(数据库间查询)
- JQuery文件上传插件Uploadify
- Struts2自定义拦截器