关于指针

指针简述

指针的大小是固定的,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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王某壬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值