C/C++基础知识备忘录(一)----指针

1. 指针变量包含两个属性:指向的地址和地址所指向的内存里存储的数据类型。

和指针相关的易混淆的值有三个:指针的值(即指针指向的地址);指针本身的地址;指针指向的地址所存储的值。下面以图和代码说明:

void Test_pointer()
{    
     int test =123;
     int *q = &test;
     printf("&q指针本身的地址:%x\n",&q);
     printf("q指指针指向的地址%x\n",q);
     printf("*q指针指向地址所存的值:%x\n",*q);
}
int main(int argc,char* agrv[]) 
{ 
    
    Test_pointer();
    system("Pause");
  
} 

上述输出如下:

指针变量本身就是一个地址值,前面加&表示取这个指针本身的地址,&q代表指针变量存储在哪,即它自身的内存地址;q代表指针指向的地址,相当于指针变量的值;*q即指针指向的地址存储的值。


2. int *p = NULL;与 int *p; *p=NULL 的区别。

   int *p = NULL表示定义一个整型指针变量,并把指针变量的变量值初始化为NULL,指针变量的值即指针所指向的地址置为NULL。

   int *p ; *p=NULL;同样定义一个整型指针,但是*p表示是指针指向地址所存储的值,即给p指向的内存赋值为NULL(这里可能会存在内存访问非法),可以这样写

 

    int a = 10int *p = &a;
    *p = NULL;

结果就是 p所指向的地址即a的值变为了0。


3.给指定的地址直接赋值,可将地址强制转化为某个类型的指针值,在赋给对应的值,代码如下

    //向指定的内存赋值
    int *t = (int *)0x0012ff7c;
    *t =0x034A;

转载于:https://www.cnblogs.com/OSLover/archive/2012/11/22/2782563.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值