指针笔记(重点)

  • 指针定义

指针的本质也是一个变量

指针存放的是变量的地址
int a = 10;//定义一个a变量
int *p = &a;//定义一个指针变量p,存放的是a变量的地址

指针变量是8个字节的整数

*(解引用运算符)
char ch = 'W';
char s;
char *p = &ch;
s = p;//p在等号右边,把p指向变量ch的值取出来
p = 'M';//p在等号右边,往p指向的变量内存中写入内容
&(取地址运算符)

  • 指针初始化

 如果一个指针没有初值化,这样的指针是野指针,里面存放的是垃圾地址

初始化直接把一个变量的地址赋给一个指针,不确定时就初始化一个空指针
int a = 23;
int p = &a;//直接给指针变量赋个变量的地址

   int *q = NULL;//给指针变量赋个空地址0x0;

注意:不要解引用一个空指针,会发生段错误!因为0号地址属于系统级的内存,不允许用户级程序访问。

  • 指针与函数

1.指针作为函数的参数

形参是实参的拷贝,更改形参的值不会改变实参的值;传指针调用不是改变实参的值,而是通过形参改变实参指向变量的值。

2.函数返回一个指针变量
  #include <stdio.h>
  int *simaller(int *p, int *q)
  {
     return (*p > *q ? q : p);//返回的是一个指针(地址编号)
  }
  int main(int argc, const char * argv[])
  {
    int a = 15, b = 20;
    int *p;
    //调用函数返回最小值的地址
    p = simaller(&a, &b);//用指针变量p接收
    printf("%d\n", *p);
    return 0;
  }
  输出结果为:15
3.函数指针
   #include <stdio.h>
  double (*fpfunc)(double a, double b);
  double add(double a, double b);
  double sub(double a, double b);
  int main( )
  {
      fpfunc = add;
      printf("%d\n", fpfunc(3.6, 4.8));//等价于add(3.6, 4.8)
      fpfunc = sub;
      printf("%d\n", fpfunc(8.5, 3.7));//等价于sub(8.5, 3.7)
      return 0 ;
      }
     double add(double a, double b)
     {
        return a + b;
     }
     double sub(double a, double b);
     {
        return a - b;
     }
  • 指针与数组

数组名字,就是数组的首元素的地址(数组首地址)
数组名是一个指针常量,存放的地址不能更改

    double b[5];
    double *p = b;
    printf("%p %p %p\n", b, p + 0, &b[0]);//三个结果相同,都是a[0]的地址
    printf("%ld %ld\n", sizeof(b), sizeof(p + 2));

可以通过下标和指针两种方式遍历数组元素

指针数组(数组中的元素是地址编号)

指针数组的定义:
类型名 *数组名[数组长度]
char str[10] = "HelloBJ";
char *ps = str + 3;//str + 3是str[3]的地址
printf("%c ", *str);//等价于str[0]
printf("%c ", *ps);
printf("%ld\n", ps - str);//ps - str 表示ps 和 str 之间相隔了多少个类型长度
输出结果为:H l 3

  • 指针常量和常量指针

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

推荐阅读更多精彩内容