zoukankan      html  css  js  c++  java
  • C程序范例(4)——指针

    一、地址和指针的概念。

    1、变量的内容和变量的地址。

    在程序运行期间,程序代码,变量,数组,等都存放在内存中,内存单元中存储的内容就是变量的值。计算机的内存是连续的存储空间。内存编织是连续的,基本单位是字节。编译后,每一个变量名对应一个变量地址。引用一个变量就是从该变量名对应的地址中取出的数据。而给变量赋值,则是将该数据按该变量的类型存入对应的内存单元中。

    2、指针的概念。

    地址“指向”目标变量,C语言形象的把地址叫做指针,变量的值针灸师变量的地址,指针类型就是地址类型。而存放指针的另一变量就是指针类型的变量(指针变量)

    3、指针变量。

    必须先定义后使用,指针变量是存放地址的,该地址所代表的变量可能是不同类型的,所以定义一个指针变量时,必须同时指定它指向的变量的类型,称之为基类型。

    (1)定义格式:

    类型名 *指针变量名;

    (2)定义时的初始化。

    可以使用&变量名来对它进行初始化。diuble *p;p=&n;

    (3)指针变量的引用。

    &:取地址运算符 *:指向运算符(可以互相抵消)

    (4)指针变量的引用。

    注意:p=&a;是给指针变量p赋值,*p=3;是给p指向的变量赋值。俩者的含义完全不同。指针变量只存放地址,不能用整形或其他非地址类型赋值给变量。

    (5)两种访问变量的方式。

    直接访问:直接引用变量名。

    间接访问:通过指针变量和指向运算符来引用。

    (6)用二级指针实现对指针变量的引用传递。

    类型名 **二级指针变量名=&指针变量名;**p就是p指向的指针变量所指向的整形变量。

    二、指针与数组。

    1、定义指向数组元素的指针变量。

    int a【8】,b【10】;

    int *p=&a【0】;

    p=b;

    2、指针运算。

    (1)指针变量可以进行指向运算和加减运算。

    (2)指针变量可以加减一个整数。

    (3)两个同类型的指针可以进行比较运算。

    (4)C语言设置了一个指针变量,NULL,成为空指针,空指针不指向任何存储地址单元。

    3、通过指针访问数组元素。

    (1)*(p+i)或*(a+i)都表示数组元素a【i】,而p+i或a+i都表示a【i】的地址&啊【i】。

    (2)指针变量也可以带下标,如p【i】与*(p+i)等价。

    (3)注意p是变量,a是符号常量,不能给a赋值。

    4、字符指针,字符数组和字符串。

    (1)用字符指针访问字符数组。

    对于字符数组也和其他类型的数组一样,可通过数组名和指针变量。

    5、地址越界问题。

    (1)用指针变量访问数组元素时,随时要检查指针的变化范围,始终不能越界。

    (2)引用指针变量前一定要对它正确赋值。

    (3)指针运算中注意各运算符的优先级和结合顺序。

    (4)字符串整体输入时,必须要限制数组长度。

  • 相关阅读:
    LeetCode题解之Flipping an Image
    LeetCode 之Find Minimum in Rotated Sorted Array
    LeetCode题解Transpose Matrix
    LeetCode 题解之Minimum Index Sum of Two Lists
    LeetCode题解之Intersection of Two Linked Lists
    LeetCode 题解之Add Two Numbers II
    LeetCode题解之Add two numbers
    href="#"与href="javascript:void(0)"的区别
    有关ie9 以下不支持placeholder属性以及获得焦点placeholder的移除
    ie7下属性书写不规范造成的easyui 弹窗布局紊乱
  • 原文地址:https://www.cnblogs.com/yjds/p/6523159.html
Copyright © 2011-2022 走看看