A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© wxh794708907 中级黑马   /  2015-7-22 20:03  /  1093 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

指针变量如何进行初始化,指针变量应该用地址初始化
   
1) 定义的同时进行初始化
      1)完全初始化
           int *p = &a;  //用a的地址初始化 p这个指针变量
                         //另外一种描述方法:p指向了a
   
           int *p1 = &a,*p2 = &a; //p1 p2都指向了a
      2)部分初始化
           int *p3 = &b,*p4;  //定义了两个指针变量 p3 p4
           p4 = &b;
   
   
   
      2)先定义后初始化
   
        int *p7;
        p7 = NULL;  //
   
   
   
    //3)如果定义了一个指针变量,但是我不知道让这个指针指向谁
    int *p5 = NULL;  //NULL 是空(0)
    int *p6 = 0;     //空
   
    把一个指针赋值一个空,什么也不指
   
    常见的易犯的错误
    int *p8 = 1000;  杜绝
    p6 = p1;  //p6指向了a
   
   
   

    定义了一个整形变量  *p1 ,p1是一个指针变量


     *指针变量  作用:获取指针变量指向的内存空间的内容
                   获取指针变量值所对应的存储单元


    int value = *p1;  //4
    //          给指针变量指向的内存单元赋值
                *p1 = 100;
        value = *p1;  //100
   
    printf("value = %d\n",a);
   
    //"*" 的两种用法
    // 1) 用于定义一个指针变量
    // 2) 存储指针变量指向的存储空间的内容
   


void swap3(int *p,int *p1){
   
    //通过指针直接修改变量的值了
    int temp;
    temp = *p;
    *p = *p1;
    *p1 = temp;
   
}


int main(int argc, const char * argv[]) {
   
    int a = 4,b = 5;  // a = 5,b = 4
    printf("交换前:a = %d,b = %d\n",a,b);
    swap3(&a, &b);
    printf("交换后:a = %d,b = %d\n",a,b);
   
   
   
    return 0;
}


   指针的应用场景:

   1)在被函数中可以修改主调函数中的变量的值

void changValue(int *p){


    *p = 100;//这里就表示将100赋值给指针p指向的存储单元 也就是a的值;这时就改变了a的值;


}


void test(){


   
    int a = 1;
    int *p1 = &a; //p1指向了a,定义了一个指针变量;
   
    printf("%p\n",&a);
    printf("%p\n",p1);
   
    changValue(p1);
   
    printf("%d\n",*p1);  //1
    printf("%d\n",a);


}

   2)让函数可以有多个返回值

void caculator(int x,int y,int *add,int *jian,int *cheng,float *chu){


    //在函数的内部访问了主调函数中的变量值,这里直接在被调函数中改变了主调中的各元素的值
    *add = x+y;
    *jian = x-y;
    *cheng = x*y;
    *chu = x/(float)y;
   
}


int main(int argc, const char * argv[]) {


    int add=0;
    int jian=0;
    int cheng=0;
    float chu=0.0f;
   
    caculator(12, 4, &add, &jian, &cheng, &chu);
   
    printf("add = %d\n",add);
    printf("jian = %d\n",jian);
    printf("cheng = %d\n",cheng);
    printf("chu = %.2f\n",chu);
   
    return 0;
}


二级指针:指的是指向指针变量的指针变量叫二级指针;




什么类型的指针就要指向什么类型的变量;




2 个回复

倒序浏览
我觉得,这些笔记最好写在blog里面,便于以后的复习。赞一个!
回复 使用道具 举报
写得很详细,赞一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马