指针

// 定义一个 int 类型的 a 变量并赋值为 10
int a = 10;

// 定义一个 int 类型的指针 p
int *p;

// & 的操作是取地址, &a 表示获取 a 变量存储空间的首地址 。 最后将获取的地址值赋值给指针。
p = &a;

// * 表示访问 指针 指向的存储空间, *p 表示获取 p 指针指向的存储空间并将存储空间的值修改 为 100
*p = 100;


Int *p;  和 *p = 100; 的区别:
Int *p 的 * 起标识作用,表明定义的p是一个指针。
*p = 100 的 * 表示通过访问p指向的地址空间


NSLog(@"%d", a);

打印结果: 
2016-07-29 12:50:05.958 runtimeDemo[78195:7517694] 100

指针只能存储地址值,通过指针可以对指针指向的内存进行空间进行存取操作。

指针使用注意点:

 Int *p;
double d=10.0;
p=&d;
// 不建议此种做法
p 可以操作的内存空间和 d 实际的内存空间不匹配。容易造成内存操作的错误。
Int *p;
p=200;
//指针变量只能存储地址
Int *p;
printf(“%d\n”,*p);
//指针变量未经初始化,不要拿来间接访问其他的存储空间
Int *p=&a;但是不能写成 int *p;*p=&a;这种写法没有任何的意义,可以认为*是和类型符一起使用的。
*是指针运算符,访问指针指向的空间

指针在数组中的使用

// 定义一个 ages 数组, ages 变量其实就是一个指针,指向的是 age[0] 的地址。(也可以理解为 ages 指向的是 ages 数组整体存储空间的首地址)
int ages[5]={10,9,8,7,6};

// 使用数组访问的方式直接进行数组内存的访问
for (int index = 0; index < 5; index ++) {
    NSLog(@"%d", ages[index]);
}

// 定义一个 int 类型的指针
int *d;

// 将 ages 的内存地址赋值给 d
d = ages;

// 使用指针来进行数组内存的访问
for (int index = 0; index < 5; index ++) {

    NSLog(@"%d", *(d + index));

    //  这一句和上面两句的意思是一样的。
    //        NSLog(@"%d", d[index]);
}

*d  == d[0]
*(d + 1) == d[1]
*(d + 2) == d[2]
*(d + 3) == d[3]

在某种意义上来说可以简单的将指针当做数组来使用。

指针在结构体中的使用

struct stu{
    int num;
    char *name;
    char sex;
    float score;
} *ps, boy[5]={
    {101, "Zhou ping", 'M', 45},
    {102, "Zhang ping", 'M', 62.5},
    {103, "Liou fang", 'F', 92.5},
    {104, "Cheng ling", 'F', 87},
    {105, "Wang ming", 'M', 58}
};

// ps 为指向 stu 结构体的指针。
// boy 为 stu 结构体的数组。

int main(){
      

      /*
        boy 默认指向的是 boy[0] 的地址值。
        ps = boy 是 ps 指向 boy[0] 的地址值
        boy+5  = boy[4] 的地址值

      */    
      for(ps=boy; ps<boy+5; ps++) {
          printf("%d\t%s\t%c\t%f\t\n", ps->num, ps->name, ps->sex, ps->score);
      }
      return 0;
}


->  是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。
换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”。
(*p).a,和p->a完全等效

** 关于指针 ++ 或者 + 1 的说明 **
指针加 1 表示的是指针移动一个指针类型的内存大小。不是单纯的数组加 1 操作。
声明一个 int 类型的指针指向 char 类型的变量。在进行指针操作的时候就出现错位。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,423评论 3 44
  • void* 类型指针:通用变体类型指针;可以不经转换,赋给其他指针,函数指针除外;malloc返回的就是void*...
    冰吉凌阅读 3,312评论 0 18
  • C语言指针的总结 1. 变量 不同类型的变量在内存中占据不同的字节空间。 内存中存储数据的最小基本单位是字节,每一...
    xx_cc阅读 3,689评论 11 39
  • 谨记 人一定要经得起假话,受的起敷衍,忍得住欺骗,忘得了诺言,放得下一切,失去的东西,其实从来就不真正的属于你,你...
    长风留言阅读 2,923评论 6 8
  • 前言 最近真的是忙的不可开交,公司一直给安排任务,连学习和写笔记的时间都没有了,落下好几次课的笔记都没有写,所以我...
    Xiho丶阅读 1,508评论 1 12