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

第一阶段11 C语言指针分析

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

第一阶段11 C语言指针分析

加入CSDN是出于记录,希望有不足之处多加指正。

1、指针代码分析 &a
#include 

int main(int argc, char const *argv[])
{
    int (*p)[5] = NULL;      
    int arr[5] = {1,2,3,4,6};
    p = &arr;  //p 指向的是整个数组的首地址

    printf("arr  = %pn", arr);
    printf("&arr  = %pn", &arr);
    printf("p  = %pn", p);
    printf("*p  = %pn", *p);
    printf("p+1  = %pn", p+1);
    printf("p+1  = %pn", p+1);
    printf("(*p)+1  = %pn", (*p)+1);

}

运行结果:

gec@ubuntu:~/cyy$ ./zhizheng 
arr  = 0x7ffd568442d0     //数组首元素的首地址
&arr  = 0x7ffd568442d0    //整个数组的首地址
p  = 0x7ffd568442d0       //整个数组的首地址
*p  = 0x7ffd568442d0      //通过指针来访问了该数组首元素
p+1  = 0x7ffd568442e4     //p 的类型为int [5] 所以加 1相当于加5个整型20字节
p+1  = 0x7ffd568442e4     //p 的类型为int [5] 所以加 1相当于加5个整型20字节
(*p)+1  = 0x7ffd568442d4  //*p 相当于arr + 1,arr是数组首元素的首地址,+1就加一个整型大小4字节

2、指针代码分析 &a+1 和 a+1
#include 

int main(int argc, char const *argv[])
{
    int a[5] = {1,2,3,4,5};
    int b[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
   
    printf("&a  = %pn",&a);
    printf("&a+1 = %pn",&a+1);  //&a 表示整个数组 +1,加一个数组大小
    printf("a  = %pn",a);
    printf("a+1 = %pn",a+1);  //a 表示数组首元素的首地址 +1,表示增加一个单位

    return 0;
}

运行结果:

gec@ubuntu:~/cyy$ ./zhi2
&a  = 0x7ffc7b441010
&a+1 = 0x7ffc7b441024
a  = 0x7ffc7b441010
a+1 = 0x7ffc7b441014

3、首地址的指向重要性
#include 

int main(int argc , char const *argv[])
{
    int arr[] = {1,2,3,4,5};
    int *p = &arr[2];
    printf("%d ,%d ,%d ,%d ,%dn",*(p - 2),*(p - 1),*p,*(p + 1),*(p + 2));
    return 0;
}

运行结果:

gec@ubuntu:~/cyy$ ./zhi3
1 ,2 ,3 ,4 ,5

4、指针 ++ 运算顺序
#include 

int main(int argc, char const *argv[])
{
    int a[3] = {1,2,3};
    int *p;
    p = a;
    printf("%d", *(++p));    
    return 0;
}

运行结果:2

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

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

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