• 指针入门必看!!!指针的详细解析


    1.指针跟一般变量的区别
    变量是用来存储数据的数据类型,它们实际上是一个地址,地址里存的数据就是变量储存的值。你用scanf来对一个变量(比如a)进行赋值: scanf("%d", &a); &a表示变量a的地址,这里的意思也就是输入一个数然后把这个数存在一个叫a的变量的地址里面。这里还有另外一种方法可以给a赋值。 int *b = &a; scanf("%d",b). 因为scanf的参数是("一个数", 目的地变量的地址).

    而指针是一个特殊变量,也存在堆栈里面,但是它们存储的数据却是另一个变量的地址。 比如
    int b = 1; int *a = &b; 这里表示定义一个变量然后它存的值是变量b的地址。那么a = (b的地址), *a =(b的地址存储的值(也就是1)) 。 而你定义指针变量时输入的指针变量类型 int * float* double* char* 取决于它指向的普通变量的数据类型。

    2.二级指针
    int a = 1; int * b = &a; int **c = &b;
    这里定义一个指针b 用来存储a的地址, c是二级指针用来存储b的地址。 那么 c = (b的地址), *c = (b的地址存储的值,也就是b,也就是a的地址), **c =(b的地址存储的地址的值,也就是*b, 也就是a存储的值)

    3.代替数组
    int a[3] = {1,2,3};
    int *b = a;
    b = &a[0], *b = a[0], b+1 = a[1], *(b+1) = a[1],(b+2) = a[2],*(b+2) = a[2]

    int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}
    int *b[3];
    int **c;
    b = a ====> b = a[0], b = {1,2,3}
    b = a; b[1] = a[0][1];

    c = a; c = {{1,2,3},{4,5,6},{7,8,9}} c[1] = a[1] = {4,5,6}
    c[2][2] = a[2][2]

    希望可以解决你的疑惑!!!

  • 相关阅读:
    RWCString 定义 memeroy leak
    打开eclipse报错
    Eclipse 增加php插件
    Shell 字符串的截取
    【转载】Shell判断字符串包含关系的几种方法
    Shell $? $* $@ 等含义
    Shell 获取指定行的内容
    概念性进程
    网络编程
    模块详解
  • 原文地址:https://www.cnblogs.com/WENCH/p/4918406.html
Copyright © 2020-2023  润新知