zoukankan      html  css  js  c++  java
  • C语言回顾-指针

    1.指针:地址

    指针变量:存放指针的变量

    指针变量的定义:数据类型 *指针变量名 或者 数据类型* 指针变量名

    指针变量的初始化:int *p=&a;int *p=NULL;(不能先定义后初始化)

    用*p获取指针变量指向的内存空间

    如果指针变量定义以后不进行初始化,这个指针变量存放的是一个垃圾数,这个指针变量,称为野指针

    用函数实现变量值的交换,传递指针

    //
    //  main.c
    //  变量值交换
    //
    //  Created by fanyafang on 15/11/4.
    //  Copyright  2015年 itcast. All rights reserved.
    //
    
    #include <stdio.h>
    void change(int *a,int *b){
        //用两个指针变量接收地址
        //交换地址中所存的内容
        //这样函数执行完以后,指针所指向的内容已经发生了改变
        int temp=0;
        temp=*b;
        *b=*a;
        *a=temp;
    }
    
    int main(int argc, const char * argv[]) {
        int a=3,b=4;
        
        change(&a,&b);
        
        printf("a=%d,b=&b",a,b);
        
        return 0;
    }

    2.指针的应用场景

    1)在被调函数中可以修改主调函数的值

    2)让函数可以有多个返回值(把地址传过去,可以修改地址指向的值)

    3.二级指针

    int **p1=&p;//p是一个一级指针

    4.数组指针

    指向数组的首地址

    int a[4]={1,2,3,4};

    int *p=a;

    p+1指向数组的下一个元素

    p-1指向数组的上一个元素

    *(p+1)取得p+1对应的存储单元的内容

    *(a+1)同上

    *p++相当于*(p++)

    *a++这样写是错误的,因为a是一个常量

    5.一维指针数组

    int a=0,b=0,c=0;

    int *pa[3]={&a,&b,&c};//数组的值是地址

    6.指针变量之间的运算-相减 判断两个指针变量之间相隔几个元素

    7.用数组名访问二维数组

    二维数组可以看做是特殊的一维数组

    a;a+1;a+2是行指针

    a[i]+j是列指针

    第一行的首地址a[1]或a+1;

    第二行第一个元素的地址:*(a+1)或者&a[1][0]

    a=&a[0]=&a[0][0]=a[0]

    8.二维数组指针-指向二维数组的指针

    int a[2][3];

    int (*p)[3]=a;//定义行数组指针

    p=a;

    p+1指向第一行

    二维数组指针可以替代数组名使用

    9.指针数组和二维数组指针的区别

    指针数组int *p[3];//数组里放的是地址,是多个指针

    二维数组指针 int (*p)[3];//指向二维数组的指针,是一个指针

     

  • 相关阅读:
    Hive-1.2.1_05_案例操作
    Hive-1.2.1_04_DML操作
    Hive-1.2.1_03_DDL操作
    Hive-1.2.1_02_简单操作与访问方式
    Hive-1.2.1_01_安装部署
    Hadoop2.7.6_08_Federation联邦机制
    Hadoop2.7.6_07_HA高可用
    NFS服务搭建与配置
    Hadoop2.7.6_06_mapreduce参数优化
    Hadoop2.7.6_05_mapreduce-Yarn
  • 原文地址:https://www.cnblogs.com/fanglove/p/4936236.html
Copyright © 2011-2022 走看看