zoukankan      html  css  js  c++  java
  • 指针(初学者)

    1、地址和指针的概念

    (1)地址

    内存区的每一个字节都有一个编号,这就是“地址”。如果在程序中定义了一个变量,在对程序进行编译时,系统就会给这个变量分配内存单元。

    在C语言中,对变量的访问有两种方式:直接访问和间接访问。

    直接访问:如:a=5;

    系统编译时,已经对变量分配了地址,例如:若变量a分配的地址是2000,则该语句的作用是把把常数保存到地址为2000的单元。

    间接访问:如:scanf("%d",&a);

    调用函数时,把变量a的地址传递给函数scanf,函数先把该地址保存到一个单元中,然后把从键盘接收的数据通过所储存的地址保存到a变量中。

    (2)指针

    在C语言中,指针是一种特殊的变量,它是存放地址的。假设我们定义了一个指针变量int*i_pointer;可以通过语句:i_pointer=&i;来存放整型变量i的地址。

    2、操作符

    *:取值操作符。

    &:取值操作符。

    如:int i=2000;

      int *pointer;   /*此处的*并非取值,只是表示一个特征*/

      pointer = &i;

      printf("%d ",*pointer);  /*此处取值*/

    3、指针与指针变量

    知道了一个变量的地址,就可以通过这个地址来访问这个变量,因此,又把变量的地址称为变量的“指针”。

    C语言可以定义一类特殊的变量,这些变量专门用来存放变量的地址,称为指针变量。

    指针变量的值(即指针变量中存放的值)是地址(即指针)。注意区分“指针”与"指针变量"这两个概念。

    (1)定义一个指针变量“*”。

    例:float*pointer_3;  /*pointer_3是指向float型变量的指针变量*/

    char*pointer;     /*pointer_4是指向字符型变量的指针变量*/

    可以用赋值语句使一个指针变量得到另一个变量的地址,从而使它指向一个该变量。

    注:a、指针变量前的“*",表示该变量的类型为指针型变量,其一般形式为:类型说明符 *变量名;

    其中,*表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。

    例:float*pointer_1;

    指针变量名是pointer_1,而不是*pointer_1。

    b、在定义指针变量时必须指定基类型。值得注意的是·,只有整型变量的地址才能放到指向整型变量的指针变量中。

    (2)指针变量的引用”&“。

    指针变量中只能存放地址(指针),不要将一个整数(或任何其他非地址类型的数据)赋给一个指针变量,否则,编译器也会把该值当成一个地址来处理。

    C语言中提供了地址运算符&来表示变量的地址。

    其一般形式为:&变量名;

    注:变量本身必须预先声明。

    例:通过指针变量访问针型变量

    #include<stdio.h>
    
    void main()
    {
        int a,b;
        int *pointer_1,*pointer_2;
        a=100;
        b=10;
        pointer_1=&a;
        pointer_2=&b;
        printf("%d,%d
    ",a,b);
        printf("%d,%d
    ",*pointer_1,*pointer_2);
    }
  • 相关阅读:
    linux 数组与循环结构
    .NET 中将Excel 文件导入到SQLSERVER
    android 开源项目列表
    [转]PS开源项目 研究NHibernate最好实例
    asp.net mvc3 使用FckEditor 编辑内容
    asp.net mvc3 自定义 AuthorizeAttribute
    asp.net mvc3 上传图片
    Repository 模式
    [转]Remix Australia 上的 Virtual Earth ASP.NET Control 预览
    asp.net mvc 3 简单缓存+sql依赖
  • 原文地址:https://www.cnblogs.com/lvfengkun/p/10353200.html
Copyright © 2011-2022 走看看