关于指针

指针简述

指针的大小是固定的,win32 是4,win64 是8!!
对于一个存储单元来讲,单元的地址就是指针。
一个指针是一个地址,是一个常量。而一个指针变量却可以赋予不同的指针值,是变量

指针变量

指针变量:为了表示指针变量与它指向的变量间的关系,C语言中用“ * ”符号表示“指向”。Eg:p表示指针变量,那*p是p所指向的变量。

指针运算符

指针运算符:“ & ” , “ * ”
“&”取地址运算符:取变量在内存中的地址。
“ * ”指针运算符:指针变量所指的对象。 而定义指针变量时的 * 标明变量是指针类型的变量。
注意:在指针定义时 * 表示指向(标识);在指针运算时 * 表示取该指针对应的值(不是地址而是地址单元的值 )

Eg:

#include<stdio.h>int main(){    int a = 20;    int *pa = &a;       //指针变量pa指向变量a,a是pa的指向对象,可以用*pa来引用a,*pa与a是等价的。    printf("a=%d\n",a);                 //输出变量a的值    printf("*pa=%d\n", *pa);            //输出变量a的值    printf("a变量地址=%ld\n", pa);      //输出变时a的地址,由操作系统分配    printf("a变量地址=%ld\n", &a);      //输出变时a的地址,由操作系统分配    return 0;}

↑ ↑ 说明 : *a与 pa 是等价的pa与&a是等价的,变量a的地址是由 操作系统 分配的,不同的操作系统分配的地址值不同,因此a变量的地址是 动态 **的

运算结果↓↓

一维数组元素地址和内容的表现形式

↓↓

表示方式功能含义
a、&a[0]数组首地址,即a[0]的地址
&a[i]、a+i、pa+i数组元素i的地址,即a[i]的地址
a[i]、(a+i)、\(pa+i)、pa[i]数组元素i的值,即a[0]的内容

二维数组a的性质

↓↓

表示形式含义地址
a二维数组名;指向一维数组 a[0]即第0行首地址8000
a[0],(a+0),a第0行第0列元素地址8000
a+1,&a[1]第1行首地址8016
a[1],*(a+1)第1行第0列a[1][0]的地址8016
a[1]+2,*(a+1)+2,&a[1][2]第1行第2列a[1][2]的地址8020
(a[1]+2),*(\(a+1)+2,a[1][2])第1行第2列a[1][2]的元素6
©著作权归作者所有:来自51CTO博客作者某壬的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Python实现双因素方法分析(Two-Way)
  2. 线性表之链式存储(一)
  3. Nginx 的动态变量指令map 的使用
  4. 《Golang从入门到跑路》之指针
  5. 9.6 C++指向结构体变量的指针
  6. PHP 变量
  7. 3-7(单链表的相关算法题)
  8. 小白之路---C语言知识点
  9. 如何在 Java8 中风骚走位避开空指针异常

随机推荐

  1. Android开机自动启动Wi-Fi热点的方法
  2. Android实例剖析笔记(三)
  3. 如何在Android(安卓)Studio中导入包:andro
  4. Android与iOS:谁更适合HTML 5?
  5. Android中一张图片加载后所占用内存大小
  6. android studio配置系列 - 收藏集 - 掘金
  7. 使用delphi 开发多层应用(十三)使用Basic4a
  8. (转载)Android下Affinities和Task
  9. Android中称为四大组件
  10. activity 生命周期