关于指针

关于指针

指针简述

指针的大小是固定的,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
上一篇:通信系统


下一篇:C/C++题 【含答案和解析】