Objective-C语法之指针型参数

main.m

 1 #import <Foundation/Foundation.h>
 2 /**
 3  *  测试指针型参数和普通参数的区别
 4  *
 5  *  @param a 指针型参数
 6  *  @param b 普通参数
 7  *
 8  *  @return (指针型参数+2) + (普通参数+2)
 9  */
10 int pointerTypeParameterTest(int *a, int b) {
11     *a = *a + 2; //*a表示获取a变量指针(内存地址)所指向内存存储空间内的值
12     b = b + 2;
13     return *a+b;
14 }
15 int main(int argc, const char * argv[]) {
16     @autoreleasepool {
17         int a = 4;
18         int b = 5;
19         NSLog(@"a=%d, b=%d; &a=%p, &b=%p", a, b, &a, &b); //a=4, b=5; &a=0x7fff5fbff79c, &b=0x7fff5fbff798
20         NSLog(@"pointerTypeParameterTest(&a, b)=%d", pointerTypeParameterTest(&a, b)); //pointerTypeParameterTest(&a, b)=13;&a表示获取a变量的内存地址,b表示获取变量的值
21         NSLog(@"a=%d, b=%d; &a=%p, &b=%p, after the operation of pointerTypeParameterTest(&a, b)", a, b, &a, &b); //a=6, b=5; &a=0x7fff5fbff79c, &b=0x7fff5fbff798, after the operation of pointerTypeParameterTest(&a, b)
22
23
24         int *c;
25         c = &a;
26         NSLog(@"c=%d, a=%d; &c=%p, c=%p, &a=%p", *c, a, &c, c, &a); //c=6, a=6; &c=0x7fff5fbff790, c=0x7fff5fbff79c, &a=0x7fff5fbff79c
27         *c = 8;
28         NSLog(@"c=%d, a=%d; &c=%p, c=%p, &a=%p", *c, a, &c, c, &a); //c=8, a=8; &c=0x7fff5fbff790, c=0x7fff5fbff79c, &a=0x7fff5fbff79c
29     }
30     return 0;
31 }

结果:

1 2015-05-09 20:42:11.593 OCPointerTypeParameter[562:21474] a=4, b=5; &a=0x7fff5fbff79c, &b=0x7fff5fbff798
2 2015-05-09 20:42:11.594 OCPointerTypeParameter[562:21474] pointerTypeParameterTest(&a, b)=13
3 2015-05-09 20:42:11.594 OCPointerTypeParameter[562:21474] a=6, b=5; &a=0x7fff5fbff79c, &b=0x7fff5fbff798, after the operation of pointerTypeParameterTest(&a, b)
4 2015-05-09 20:42:11.594 OCPointerTypeParameter[562:21474] c=6, a=6; &c=0x7fff5fbff790, c=0x7fff5fbff79c, &a=0x7fff5fbff79c
5 2015-05-09 20:42:11.595 OCPointerTypeParameter[562:21474] c=8, a=8; &c=0x7fff5fbff790, c=0x7fff5fbff79c, &a=0x7fff5fbff79c
时间: 2024-10-14 07:08:26

Objective-C语法之指针型参数的相关文章

初学Objective - C语法之代码块(block)

一.block声明 1.无参数,无返回值: void (^sayHi)(); 2.有参数,有返回值: NSInteger (^operateOfValue)(NSInteger num); block的声明:返回值类型(^block变量名)(参数列表) 脱字符(^)是块的语法标记 二.block实现 block变量名 = ^返回值类型(参数列表) 1.  sayHi = ^{ NSLog(@"你好"); }; 2. operateOfValue = ^ NSInteger (NSInt

《黑马程序员》 NSArray和NSMutableArray的使用(Objective - c语法)

------- <a href="http://www.itheima.com" target="blank">Windows Phone 7手机开发</a>.<a href="http://www.itheima.com" target="blank">.Net培训</a>.期待与您交流! ------- 1 NSArray 的使用方法 • Foundation中数组(NSAr

Visual Studio 2005 学习笔记一 入门

转载自:http://blog.163.com/zm_shichaoren/blog/static/6880234120087211452776/ Visual studio 2005入门记 终于卸掉了Visual C++6.0,换上了全新的Visual C++2005.尽管是简体中文版的,但是功能强大的Visual studio 2005 IDE庞大的开发环境和N多的配置设置,学习起来还不是很简单.C++/CLI通过对ISO C++ 标准的纯粹扩展和新语法,不像传统的MS-DOS 控制台程序,

学好C++必须要注意的十八个问题

转自: 学好C++必须要注意的十八个问题 一.#include "filename.h"和#i nclude <filename.h>的区别 #include "filename.h"是指编译器将从当前工作目录上开始查找此文件 #include <filename.h>是指编译器将从标准库目录中开始查找此文件 二.头文件的作用 加强安全检测 通过头文件可能方便地调用库功能,而不必关心其实现方式 三.* , &修饰符的位置 对于*和&a

c++学习重点分析

C++是一种语言,仅仅是它的语法.特性.标准类库就已经是一门非常高深的课程,所以在开始学习的时候,必须先要打好基础.要知道当我们在学习它的时候重点应该注意什么. 一.#include “filename.h”和#include 的区别 #include “filename.h”是指编译器将从当前工作目录上开始查找此文件 #include 是指编译器将从标准库目录中开始查找此文件 二.头文件的作用 加强安全检测 通过头文件可能方便地调用库功能,而不必关心其实现方式 三.* , &修饰符的位置 对于

C&amp;C++——C与C++知识点

C++知识点系列之一(转+整理) 编程时类声明后面千万不要忘了加分号,不然会出现很多错误!! c系列之一一.#include “filename.h”和#include<filename.h> 的区别 #include “filename.h”是指编译器将从当前工作目录上开始查找此文件 #include<filename.h> 是指编译器将从标准库目录中开始查找此文件 二.头文件的作用 加强安全检测 通过头文件可能方便地调用库功能,而不必关心其实现方式 三.* , &修饰符

const 不再迷茫

博客地址:http://blog.csdn.net/jiangxinnju github:https://github.com/jiangxincode 首先说明一下const在C和C++中的主要用法,被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性.它可以修饰变量.函数的参数.返回值,甚至函数的定义体. const修饰变量 const修饰变量通常用于定义符号常量.我们过去一般使用宏定义的方式定义符号常量,比如: #define PI3.1415926 其实我们也可以

PoEdu - Windows阶段班 【Po学校】Windows编程 Lesson004_003-2 文件操作

001_函数的不同版本 HANDLE : CreateFile()函数返回一个内核对象的句柄 WINAPI : 一种调用约定,调用方式. _In_ 与 _In_opt_ : 本身没有意义,一个说明宏,来标明这个参数的性质. _In_ 说明此参数是"输入型"参数 _In_Opt_ 说明此参数是"输入指针型"参数 _Out_ 说明此参数是"输出型"参数 输出参数要保障:输出型参数,具有可操作的空间 VS2015中,CreateFile()是一个宏:W

&lt;转&gt;32位移植到64位 注意事项

32bit-64bit porting work注意事项 64位服务器逐步普及,各条产品线对64位升级的需求也不断加大.在本文中,主要讨论向64位平台移植现有32位代码时,应注意的一些细小问题. 什么样的程序需要升级到64位? 理论上说,64位的操作系统,对32位的程序具有良好的兼容性,即使全部换成64位平台,依然可以良好的运行32位的程序.因此,许多目前在32位平台上运行良好的程序也许不必移植,有选择,有甄别的进行模块的升级,对我们工作的展开,是有帮助的. 什么样的程序需要升级到64位呢? 除