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

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

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;

}

相关文章
|
17天前
|
C语言
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
|
1月前
|
存储 Java C++
C++ 引用和指针:内存地址、创建方法及应用解析
C++中的引用是现有变量的别名,创建时需用`&`运算符,如`string &meal = food;`。指针存储变量的内存地址,使用`*`创建,如`string* ptr = &food;`。引用必须初始化且不可为空,而指针可初始化为空。引用在函数参数传递和提高效率时有用,指针适用于动态内存分配和复杂数据结构操作。选择使用取决于具体需求。
40 9
|
12天前
|
存储 程序员 C语言
【C 言专栏】C 语言指针的深度解析
【4月更文挑战第30天】C 语言中的指针是程序设计的关键,它如同一把钥匙,提供直接内存操作的途径。指针是存储其他变量地址的变量,通过声明如`int *ptr`来使用。它们在动态内存分配、函数参数传递及数组操作中发挥重要作用。然而,误用指针可能导致错误,如空指针引用和内存泄漏。理解指针的运算、与数组和函数的关系,以及在结构体中的应用,是成为熟练 C 语言程序员的必经之路。虽然挑战重重,但掌握指针将增强编程效率和灵活性。不断实践和学习,我们将驾驭指针,探索更广阔的编程世界。
|
17天前
|
存储 C语言
指针深入解析(C语言基础)带你走进指针,了解指针
指针深入解析(C语言基础)带你走进指针,了解指针
|
17天前
|
C语言 C++
C语言:指针运算笔试题解析(包括令人费解的指针题目)
C语言:指针运算笔试题解析(包括令人费解的指针题目)
|
19天前
|
存储 安全 C语言
深入解析void指针类型
深入解析void指针类型
16 0
|
1月前
|
搜索推荐 算法 索引
【排序算法】深入解析快速排序(霍尔法&&三指针法&&挖坑法&&优化随机选key&&中位数法&&小区间法&&非递归版本)
【排序算法】深入解析快速排序(霍尔法&&三指针法&&挖坑法&&优化随机选key&&中位数法&&小区间法&&非递归版本)
|
1月前
|
存储 程序员 编译器
爱上C语言:指针很难?来来来,看看这篇(基础篇)
爱上C语言:指针很难?来来来,看看这篇(基础篇)
|
6天前
|
C语言
c语言指针总结
c语言指针总结
12 1
|
19天前
|
安全 C语言
指针与字符串:C语言中的深入探索
指针与字符串:C语言中的深入探索
15 0

推荐镜像

更多