指针练习------详细的图文并茂法来解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 指针练习------详细的图文并茂法来解析

int main()

{

   //一维数组

   int a[] = { 1,2,3,4 };

   printf("%d\n", sizeof(a));


   printf("%d\n", sizeof(a + 0));


   printf("%d\n", sizeof(*a));


   printf("%d\n", sizeof(a + 1));


   printf("%d\n", sizeof(a[1]));


   printf("%d\n", sizeof(&a));


   printf("%d\n", sizeof(*&a));


   printf("%d\n", sizeof(&a + 1));


   printf("%d\n", sizeof(&a[0]));


   printf("%d\n", sizeof(&a[0] + 1));

image.png

image.png

 //字符数组

image.png

   char arr[] = { 'a','b','c','d','e','f' };

   printf("%d\n", sizeof(arr));

   printf("%d\n", sizeof(arr + 0));

   printf("%d\n", sizeof(*arr));

   printf("%d\n", sizeof(arr[1]));

   printf("%d\n", sizeof(&arr));

   printf("%d\n", sizeof(&arr + 1));

   printf("%d\n", sizeof(&arr[0] + 1));

image.png

   printf("%d\n", strlen(arr));

   printf("%d\n", strlen(arr + 0));

   printf("%d\n", strlen(*arr));

   printf("%d\n", strlen(arr[1]));

   printf("%d\n", strlen(&arr));

   printf("%d\n", strlen(&arr + 1));

   printf("%d\n", strlen(&arr[0] + 1));

image.png

   char arr[] = "abcdef";

image.png

   printf("%d\n", sizeof(arr));

   printf("%d\n", sizeof(arr + 0));

   printf("%d\n", sizeof(*arr));

   printf("%d\n", sizeof(arr[1]));

   printf("%d\n", sizeof(&arr));

   printf("%d\n", sizeof(&arr + 1));

   printf("%d\n", sizeof(&arr[0] + 1));

image.png

   printf("%d\n", strlen(arr));

   printf("%d\n", strlen(arr + 0));

   printf("%d\n", strlen(*arr));//error

   printf("%d\n", strlen(arr[1]));//error

   printf("%d\n", strlen(&arr));

   printf("%d\n", strlen(&arr + 1));

   printf("%d\n", strlen(&arr[0] + 1));

image.png

//指针存常量字符串

   char* p = "abcdef";

image.png

   printf("%d\n", sizeof(p));

   printf("%d\n", sizeof(p + 1));

   printf("%d\n", sizeof(*p));

   printf("%d\n", sizeof(p[0]));

   printf("%d\n", sizeof(&p));

   printf("%d\n", sizeof(&p + 1));

   printf("%d\n", sizeof(&p[0] + 1));

image.png

   printf("%d\n", strlen(p));

   printf("%d\n", strlen(p + 1));

   printf("%d\n", strlen(*p));

   printf("%d\n", strlen(p[0]));

   printf("%d\n", strlen(&p));

   printf("%d\n", strlen(&p + 1));

   printf("%d\n", strlen(&p[0] + 1));

image.png

   //二维数组

   int a[3][4] = { 0 };

image.png

   printf("%d\n", sizeof(a));

   printf("%d\n", sizeof(a[0][0]));

   printf("%d\n", sizeof(a[0]));

   printf("%d\n", sizeof(a[0] + 1));

   printf("%d\n", sizeof(*(a[0] + 1)));

   printf("%d\n", sizeof(a + 1));

   printf("%d\n", sizeof(*(a + 1)));

   printf("%d\n", sizeof(&a[0] + 1));

   printf("%d\n", sizeof(*(&a[0] + 1)));

   printf("%d\n", sizeof(*a));

   printf("%d\n", sizeof(a[3]));  

image.png

   return 0;

}

相关文章
|
2月前
|
存储 程序员 C++
深入解析C++中的函数指针与`typedef`的妙用
本文深入解析了C++中的函数指针及其与`typedef`的结合使用。通过图示和代码示例,详细介绍了函数指针的基本概念、声明和使用方法,并展示了如何利用`typedef`简化复杂的函数指针声明,提升代码的可读性和可维护性。
112 1
|
4月前
|
Serverless 编译器 C语言
【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
|
8月前
|
C++
指针习题练习
指针习题练习
33 0
|
8月前
|
XML JSON Java
图文并茂:解析Spring Boot Controller返回图片的三种方式
图文并茂:解析Spring Boot Controller返回图片的三种方式
701 0
|
8月前
|
C++ 存储 Java
C++ 引用和指针:内存地址、创建方法及应用解析
'markdown'C++ 中的引用是现有变量的别名,用 `&` 创建。例如:`string &meal = food;`。指针通过 `&` 获取变量内存地址,用 `*` 创建。指针变量存储地址,如 `string *ptr = &food;`。引用不可为空且不可变,指针可为空且可变,适用于动态内存和复杂数据结构。两者在函数参数传递和效率提升方面各有优势。 ```
|
9月前
|
C++
多重指针:深入解析、应用与示例
多重指针:深入解析、应用与示例
|
9月前
|
C++
野指针与空指针:深入解析与防范策略
野指针与空指针:深入解析与防范策略
|
3月前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
273 13
|
4月前
|
C语言
无头链表二级指针方式实现(C语言描述)
本文介绍了如何在C语言中使用二级指针实现无头链表,并提供了创建节点、插入、删除、查找、销毁链表等操作的函数实现,以及一个示例程序来演示这些操作。
56 0

热门文章

最新文章

推荐镜像

更多