指针与指针变量

本文详细介绍了指针变量的概念,包括如何定义指针变量、指针变量的使用方法以及通过实例解释了指针变量的引用方式。同时,文章还探讨了如何通过指针变量来操作内存中的数据。

  1、i_pointer是一个指针变量,而*i_pointer表示i_pointer所指向的变量即i。

-------------



下面两个语句作用相同:
① i=3;
② *i_pointer=3;

 

  2、定义指针变量:

基类型 *指针变量名;
下面都是合法的定义:
  float *pointer_3; // pointer_3是指向单精度型数据的指针变量
  char *pointer_4; // pointer_4是指向字符型数据的指针变量
请注意: 指针变量名是pointer_3和pointer_4,而不是*pointer_3和*pointer_4,即“*”不是指针变量名的一部分,在定义变量时在变量名前加一个“*”表示该变量是指针变量

    针变量名是pointer_3,而*pointer_3表示指针pointer_3所指向的存储单元(如果是变量,那么他就指向这个变量)。
  那么,怎样使一个指针变量指向另一个变量呢?只需要把被指向的变量的地址赋给指针变量即可。例如:
  pointer_1=&i; //将变量i的地址存放到指针变量pointer_1中
  pointer_2=&j; //将变量j的地址存放到指针变量pointer_2中

  3、引用指针变量:

  (1)如果已执行了“pointer_1=&a;”语句,请问&*pointer_1的含义是什么?“&”和“*”两个运算符的优先级别相同,但按自右至左方向结合,因此先进行*pointer_1的运算,它就是变量a,再执行&运
算。因此,&*pointer_1与&a相同,即变量a的地址。
  如果有pointer_2=&*pointer_1;它的作用是将&a(a的地址)赋给pointer_2,如果pointer_2原来指向b,经过重新赋值后它已不再指向b了,而也指向了a。

  (2)*&a的含义是什么?先进行&a的运算,得a的地址,再进行*运算,即&a所指向的变量,*&a和*pointer_1的作用是一样的(假设已执行了“pointer_1=&a;”),它们等价于变量a。即*&a与a等价。

#include <iostream>
#include <windows.h>
using namespace std;
void main(){
char c;
int *num,*p;
int a=10,b=20;
num=&a;
cout<<*num<<" "<<endl;
cout<<*&b<<" "<<DWORD(&(*&b))<<" "<<DWORD(&b)<<endl;
c=getchar();
}







 

### C语言中的变量指针指针变量 #### 定义概念 在C语言中,**变量指针**指的是该变量的内存地址。而**指针变量**是用来存储其他变量地址的一种特殊类型的变量[^1]。 对于任何数据类型(如`int`, `char`等),其对应的指针类型可以表示为`type *pointer_name;`的形式,在这里`*`表明这是一个指向特定类型的指针声明[^2]。 当提到“**二级指针**”,这意味着指针本身也是一个对象的地址,即它保存的是另一个指针的位置。表达方式通常写作`type **double_pointer_name;`,这里的两个星号代表了双重间接寻址的概念。 #### 使用方法 创建并初始化一个简单的整型指针如下所示: ```c #include <stdio.h> int main() { int a = 5; int *p = &a; printf("Value of 'a' is %d\n", a); printf("Address of 'a' is %p\n", (void*)&a); printf("Value pointed by 'p' is %d\n", *p); return 0; } ``` 上述代码展示了如何定义一个名为`p`的指针变量来持有整数`a`的地址,并通过解引用操作符(`*`)访问其所指向的数据项。 如果要处理更复杂的场景比如动态分配数组或者链表结构,则可能需要用到多级指针。例如,函数参数传递时可能会遇到形参被设计成接受指针作为输入的情况,此时就需要理解一级或多级指针的工作原理。 #### 关键区别 - **变量指针**: 是具体变量的内存位置。 - **指针变量**: 存储着其它变量或对象的地址;可以通过改变此值影响原始目标。 两者之间的主要差异在于用途上的不同:前者用于描述关系,后者则是实际编程实现的一部分[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值