栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

明解·指针

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

明解·指针

取地址运算符&

 

%p———表示对象地址的转换说明

#include
int main()
{
    int n;
    printf("n的地址是%pn",&n);
    return 0;
}

指针

int型变量(hiroko):保存整数的盒子

指向int型变量的指针变量(*isako):保存“存放整数对象的地址”的盒子

当指针p的值为对象X的地址时,一般说p指向x

&sato是指向sato的指针,其值为sato的地址

指针运算符

单目运算符*

·也称作:解引用运算符、间接访问运算符

将指针运算符*写于指针之前,就可以显示该指针指向的对象内容

*a  :    a指向的对象

当p指向x时:*p就是x的别名

指针与函数

·如果要在函数中修改变量的值,就需要传入指向该变量的指针,告诉程序:

传入的是指针哦,请对指针指向的对象进行处理吧

·只要在被调用的函数里的指针前写上指针运算符*,就能间接处理该指针指向的对象,这也是*运算符又称为间接访问运算符的原因。

空指针

·什么也不指向的特殊指针是空指针

·表示空指针的对象式宏NULL是空指针常量

指针和数组

·数组名原则上会被解释为指向该数组起始元素的指针

即:如果a是数组,那么表达式a的值就与a[0]的地址,即&a[0]一致

·当指针p指向数组中的元素e时,

p+i 为指向元素e后第i个元素的指针;*(p+i) 可以写成p[i]

p-i 为指向元素e前第i个元素的指针;  *(p-i)可以写成p[-i]


数组名在什么情况下不被视为指向起始元素的指针呢?

1.作为sizeof运算符的操作数时

sizeof(数组名)不会生成指向起始元素的指针的长度,而是生成数组整体的长度。

2.作为取址运算符&的操作数出现时

&数组名  不是指向起始元素的的指针的指针,而是指向数组整体的指针

#include
int main(void)
{
    int i;
    int a[5]={1,2,3,4,5};
    int *p=a;
    for(i=0;i<5;i++)
    {
        printf("a[%d]=%d *(a+%d)=%d p[%d]=%d *(p+%d)=%dn",i,a[i],i,*(a+i),i,p[i],i,*(p+i));
    }
        for(i=0;i<5;i++)
    {
        printf("&a[%d]=%d a+%d=%d &p[%d]=%d p+%d=%dn",i,&a[i],i,(a+i),i,&p[i],i,(p+i));
    }
    return 0;

}

​​​​​​​ 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/311701.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号