指针数组和数组指针

news/2025/2/22 1:48:39/

//void test(int arr[])
//{
//    int sz = sizeof(arr) / sizeof(arr[0]);
//    printf("%d\n", sz);//计算的是
//    //地址除元素的大小的值 32位 ֵ值为1 64位 值为2
//}
//int main()
//{
//    int arr[10] = { 0 };
//    test(arr);
//    char ch = 'w';
//    char* pc = &ch;
//    char arr1[] = "abcdef";
//    char* p = arr1;// arr1 表示的是首元素地址
//    return 0;
//}
//int main()
//{
//    const char* p = "hello";//“hello\n”是一个常量字符串,
//    //不可修改的,要用const来修饰
//    printf("%s\n", p);
//    return 0;
//}
//int main()
//{
//    char arr1[] = "abcdef";
//    char arr2[] = "abcdef";
//    const char* p1 = "abcdef";
//    const char* p2 = "abcdef";
//    if (arr1 == arr2)
//        printf("hehe\n");
//    else
//        printf("haha\n");//两个数组存两个地址
//    if (p1 == p2)
//        printf("hehe\n");//相同的常量字符串会存同一个内存,节省空间
//                         //指针实际指向的是同一个内存
//    else
//        printf("haha\n");
//
//    return 0;
//}
//int main()
//{
//    int arr[10] = { 0 };//整型数组
//    char ch[5] = { 0 };//字符数组
//    int* parr[4];//存放整型指针的数组——指针数组 存放地址
//    char* pch[5];//存放字符指针的数组——指针数组 存放地址
//    return 0;
//}
//int main()
//{
//    int a = 10;
//    int b = 20;
//    int c = 30;
//    int d = 40;
//    int* arr[4] = { &a,&b,&c,&d };
//    int i = 0;
//    for (i = 0; i < 4; i++)
//    {
//        printf("%d\n", *(arr[i]));
//        printf("%p\n", arr[i]);
//    }
//    return 0;
//}
//int main()
//{
//    int arr1[] = { 1,2,3,4,5 };
//    int arr2[] = { 2,3,4,5,6 };
//    int arr3[] = { 3,4,5,6,7 };
//    int* parr[] = { arr1,arr2,arr3 };
//    int i = 0;
//    for (i = 0; i < 3; i++)
//    {
//        int j = 0;
//        for (j = 0; j < 5; j++)
//        {
//            printf("%d ", *(parr[i] + j));
//            //通过指针数组访问数组首元素地址,
//            //+j访问数组元素,再解引用
//        }
//        printf("\n");
//
//    }
//    return 0;
//}
// 
//--数组指针
int main()
{
    //int* p = NULL;//p是整型指针——指向整型的指针——存放整型的地址
    //char* pc = NULL;//pc是字符指针——指向字符的指针——存放字符的地址
    //数组指针——指向数组的指针 ——存放数组的地址
    //int arr[10] = { 0 };
    //arr--首元素地址
    // &arr[0]--首元素地址
    // &arr——数组的地址
    //
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
    int(*p)[10] = &arr;//存放数组的地址,数组指针,[]优先于*,()先结合*p
    printf("%d\n", (*p)[0]);
    //char* arr1[5];//指针数组
    //char* (*p)[5] = &arr1;//数组指针
    //*p是指针 [5]指针指向五个元素 p是指针变量的名字 p指向的元素类型是char*
    return 0;
}


http://www.ppmy.cn/news/96408.html

相关文章

String类的学习笔记(下):字符串拼接以及StringBuilder和StringBuffer的学习

本文介绍了String类对字符串进行拼接的方法 和拼接字符串的效率分析 以及能对字符串内容进行修改的StringBuilder和StringBuffer类其常用方法和区别 , 最后介绍了两个字符串经典面试题 StringBuilder和StringBuffer的学习 一.String类概括二.StringBuilder和StringBuffer1.字符…

第一节 Python 顺序结构

1 . Python 介绍 1.1 Python是什么 Python是一种高级编程语言,具有简单易学、功能强大、可扩展性好等特点,是目前广泛应用于Web开发、数据分析、人工智能等领域的编程语言之一。 Python的历史可以追溯到1989年,当时在荷兰的Guido van Rossum开发了这种语言,Guido最初设计P…

Arduino学习

物联网学习资料 《arduino程序设计基础》陈吕洲 北京航空航天大学出版社 半颗心脏博客导航一站式搜索(所有博客的汇总帖) Ai-Thinker 安信可科技 github 半颗心脏 | 徐宏 蓝牙技术 蓝牙网关【【智能家居】入门攻略二&#xff01;啥是网关&#xff1f;蓝牙、zigbee协议详…

【Java零基础入门篇】第 ③ 期 - 面向对象编程(一)

【Java零基础入门篇】第 ③ 期 - 面向对象编程&#xff08;一&#xff09; 博主&#xff1a;命运之光 专栏&#xff1a;Java零基础入门 理解面向对象三大主要特征&#xff1b; 掌握类与对象的区别与使用&#xff1b; 掌握类中构造方法以及构造方法重载的概念及使用&#xff1b;…

YUM安装LNMP架构配置命令与搭建论坛

LNMP架构配置命令与搭建论坛 LNMP简介安装须知安装 Nginx配置yum源yum安装nginx并查看版本号开启服务并且设为开机自启 安装 MySQL 5.7 (mariadb)移除软件包下载安装mysql安装MySQL报错问题解决方案&#xff1a; 开启服务并设为开机自启在日志文件中找出root用户的初始密码登录…

【趣味题目】不用加减乘除做加减乘除运算

不用加减乘除做加减乘除运算 预备知识做加法做减法做乘法做除法|取模 预备知识 这类题目我选择使用位运算&#xff0c;需要了解到&#xff1a;两个数异或&#xff08;a^b&#xff09;结果是忽略进位的结果&#xff1b;两个数相与&#xff08;a&b&#xff09;<<1结果…

横向移动-传递攻击atschtasks

横向移动就是拿下对方一台主机后&#xff0c;以拿下的那台主机作为跳板&#xff0c;对内网的其他主机再进行后渗透&#xff0c;拿到其他内网主机的权限的过程。叫做横向移动。横向移动的主要目的就是扩大战果。 传递攻击主要建立在明文和hash值获取基础上进行攻击。 at和scht…

AI歌手是否会取代流行歌手成为主流?

随着科技的飞速发展&#xff0c;人工智能已经渗透到了我们生活的方方面面。在音乐领域&#xff0c;AI歌手逐渐崭露头角&#xff0c;引发了人们对于未来音乐产业发展的讨论。 那么&#xff0c;AI歌手是否会取代流行歌手成为主流呢&#xff1f;本文将从以下几个方面进行分析&…