黑马程序员技术交流社区

标题: 第十天笔记的补充 [打印本页]

作者: wxh794708907    时间: 2015-7-22 20:03
标题: 第十天笔记的补充
指针变量如何进行初始化,指针变量应该用地址初始化
   
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;
}


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




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





作者: lixiaopeng    时间: 2015-7-22 21:24
我觉得,这些笔记最好写在blog里面,便于以后的复习。赞一个!
作者: 哒哒萌    时间: 2015-7-22 21:41
写得很详细,赞一个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2