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

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

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;

}

相关文章
|
19天前
|
Serverless 编译器 C语言
【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
|
4月前
|
C++ 存储 Java
C++ 引用和指针:内存地址、创建方法及应用解析
'markdown'C++ 中的引用是现有变量的别名,用 `&` 创建。例如:`string &meal = food;`。指针通过 `&` 获取变量内存地址,用 `*` 创建。指针变量存储地址,如 `string *ptr = &food;`。引用不可为空且不可变,指针可为空且可变,适用于动态内存和复杂数据结构。两者在函数参数传递和效率提升方面各有优势。 ```
|
5月前
|
C++
野指针与空指针:深入解析与防范策略
野指针与空指针:深入解析与防范策略
|
5月前
|
C++
多重指针:深入解析、应用与示例
多重指针:深入解析、应用与示例
|
4月前
|
C++
指针习题练习
指针习题练习
19 0
|
4月前
|
XML JSON Java
图文并茂:解析Spring Boot Controller返回图片的三种方式
图文并茂:解析Spring Boot Controller返回图片的三种方式
465 0
|
5月前
|
存储 程序员 C语言
C语言指针变量的深入解析与应用
C语言指针变量的深入解析与应用
46 0
|
10天前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
26 0
|
10天前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
24 0

推荐镜像

更多