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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Brisingr 中级黑马   /  2015-10-17 14:50  /  756 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

指针总结

1.指针的基本概念

内存单元的编号也叫地址。既然根据内存单元的编号或者地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。

2.使用指针的好处

a.为函数提供修改调用变量的灵活手段
b.让函数有多个返回值
c.可以改善某些子程序的效率>>在数据传递时,如果数据块较大(比如说数据缓冲区或较大的结构)这是就可以使用指针传递地址而不是实际数据,既提高传输速度,有节省大量内存。
d.为动态数据结构(如二叉树,链表)提供支持

3.变量的存取方式

存取方式分为两种:直接存取和间接存取。
直接存取:变量的赋值和取值
间接存取:通过指针(地址)间接操作完成。

4.什么是指针变量

在c语言中,允许用一个变量来存放指针,这种变量成为指针变量。因此,一个指针变量的值就是某个内存单元的地址或者某内存单元的指针。
注意:
        严格意义上说:指针是一个地址是一个常量
                               指针变量是存放一个地址,是一个变量

5.指针变量如果不出事化会有什么后果?

如果一个指针变量定义以后如果不进行初始化,这个指针变量存放的是一个垃圾数,这个指针变量称为野指针。一定要避免操作野指针,因为可能会带来意想不到的错误。
                        1)可能会导致程序崩溃
                        2)访问你不该访问的数据

6.指针变量的初始化

        1)完全初始化
                int *p = &a;  //用a的地址初始化p这个指针变量(p指向了a)
        2)部分初始化
                int *p = &b,*p4  //定义了两个指针变量p3,p4
         3)如果定义了一个指针变量,但是不知道指向谁
                int *p = NULL
                int *p6 = 0;
                把一个指针赋值为空,表示什么也不指。       

应用:**********************用函数实现两变量值交换*************************

//
//  main.c
//  用函数实现两变量值交换
//
//  Created by Brisinga on 15/10/16.
//  Copyright © 2015年 yan. All rights reserved.
//

#include <stdio.h>

//定义变量值交换函数
void swap(int *p1,int *p2){

    int temp = *p1;
    *p1 = *p2;
    *p2 = temp;
}
int main(int argc, const char * argv[]) {

    int a = 10;
    int b = 5;
    printf("a = %d,b = %d\n",a,b);
    swap(&a, &b);
    printf("a = %d,b = %d\n",a,b);
    return 0;
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马