zoukankan      html  css  js  c++  java
  • C语言讲义——指针(pointer)

    指针是C语言最重要的特性之一,
    也是最容易被误解的特性之一。


    现代计算机把内存分割为字节(Byte),
    每个字节都有唯一的地址(Address),
    如果内存中有n个字节,可以把地址看做0~n-1的数。

    程序中的每个变量都占据字节(至少1字节),把第一个字节的地址称为”变量的地址”,
    假设变量int i占有内存2000~2003,则变量i的地址是2000。

    指针变量(pointer variable)

    口诀:
    变量有位置,位置有地址
    指针是变量,其值为地址

    指针就是地址,指针变量就是存储地址的变量。
    C语言要求每个指针变量只能指向一种特定的类型的对象。

    int *p;
    double *q;
    char *r;
    

    指针变量的赋值:

    int i=2099;
    int*  p;
    P = &i;
    printf("%d", *p);
    

    值和地址

    &取地址运算符
    *间接寻址运算符

    下例中:

    i是普通变量,&i是存储变量的地址
    p是指针,是地址,*p是指针指向地址的值

    #include <stdio.h>
    main() {
        int  i=2099;
        printf("变量的值:%d
    ", i  );
        printf("变量的地址:%x
    ", &i  );
    
        int *p;
        p = &i;
        printf("指針(值):%d
    ", *p  );
        printf("指針(地址):%x
    ", p  );
    }
    

    NULL指针

    在变量声明时,如果没有确切的地址可赋值,为指针变量赋一个NULL值是一个良好的编程习惯。
    赋为NULL值的指针称为“空指针”。

    #include <stdio.h>
    int main(int argc, char *argv[]) {
    	int  *ptr = NULL;
    	printf("ptr的值是:char=%x, int=%d
    ",ptr,ptr);
    
    	return 0;
    }
    

    运行结果:

    ptr的值是:char=0, int=0
    
  • 相关阅读:
    【工具】使用Google搜索的一些技巧
    git merge和rebase合并分支的区别
    《人月神话》读后感
    记录 Vue 中遇见的坑
    chrome信任http
    sed命令替换配置文件
    中控考勤机IP能ping通,但是同过接口连接不上的解决版本
    如何启动解压版的Tomcat6.0
    服务器获取客户端ip
    linux 增加权限
  • 原文地址:https://www.cnblogs.com/tigerlion/p/11191576.html
Copyright © 2011-2022 走看看