C 指针

C 指针


图示:
1000、1001 这些数字表示内存地址,A 表示一个字节的内存空间。

**存储空间**
char a = 'A';  
printf("%d",&a); // -> 1000 | 变量 a 在内存中的地址(指针)
printf("%c",a); // -> A  | 变量 a 的值    

说明:
char a = 'A'; 申明了一个 char 型变量 a ,a 中是字符 'A' ,变量 a 放在地址(指针)为 1000 的内存空间。


一般指针:

char bb = 'B';
char *b = &bb;
printf("%c",*b); // -> B
printf("%d",b); // -> 1001 

说明:
char *b = 'B'; char 指定指针变量 b 中存储的地址(指针)指向一个或多个 char 型值。'B' 说明 b 中存储的指针指向的内存中存储了一个 char 型值。

总结: 变量都是容器,变量都放在对应地址的内存空间中,普通变量直接存储对应类型的 value,指针变量存储指向对应类型 value 的指针。


指针和数据结构:

struct WHPoint {
    int x;
    int y;
};

typedef struct WHPoint WHPoint;

WHPoint p;
p.x = 10;
p.y = 10;

WHPoint *point = &p;

CGFloat x_ = (*point).x;
CGFloat y_ = point->y;    

说明:
在 Objective-C 中,一切对象皆数据结构。所以数据结构指针有了一个指针运算符 "->"。


函数指针:

// 常规写法 returnType (* Name) (params)  

int max (int a , int b) { // 函数
	return MAX(a, b);
}

// int (* tMax) (int a , int b) 申明一个名字为 tMax 的函数指针变量,将其作为另一个函数的参数
int bMax (int c , int d , int (* tMax) (int a , int b)) { 
	return tMax(c, d);
	// return (*tMax)(c, d);
}

typedef int (* tTMax) (int a , int b);

int bBMax (int c , int d , tTMax tMax) {
	return tMax(c, d);
}
posted @ 2017-03-30 23:29  上水的花  阅读(157)  评论(0)    收藏  举报