首页 > 其他分享 >C-指针数组与数组指针

C-指针数组与数组指针

时间:2023-04-09 21:01:50浏览次数:34  
标签:arr 指向 int 数组 printf 指针

指针数组

  • 用于存放指针的数组
int a = 1, b = 2, c = 3;
int* arr[3] = {&a, &b, &c};
// arr[0] == &a
// *arr[0] == a
int** p = arr;
// *p == arr[0] == &a
// p[0] == arr[0] == &a
// *(p+1) == arr[1] == &b
// **p == *arr[0] == a
// *p[0] == *arr[0] == a
// **(p+1) == *arr[1] == b

数组指针

  • 用于指向整个数组的指针
int a[3];
int (*p)[3] = &a;
// p = &a;
printf("%d, %d, %d", *(*p), *(*p+1), *(*p+2));
// (*p)[0], (*p)[1], (*p)[2]
// 1, 2, 3

p, &a 代表的是整个数组的首地址,指向了整个数组

*p 是指向首元素的指针, 表示所指向数组中首个元素的地址

  • 数组指针可以处理二维数组
int arr[][3] = {{1, 2, 3}, {4, 5, 6}};  // 2*3
int (*p)[3] = arr;
// 不需要对二维数组取地址, 此时数组指针指向的是二维数组中的第一个元素(数组)
printf("%d", *(*p+1));      // 2
printf("%d", *(*(p+1)+2));  // 6
printf("%d", p[1][2]);   // 6

标签:arr,指向,int,数组,printf,指针
From: https://www.cnblogs.com/khrushchefox/p/17301043.html

相关文章

  • NOI / 1.8编程基础之多维数组 04:错误探测
    描述给定n*n由0和1组成的矩阵,如果矩阵的每一行和每一列的1的数量都是偶数,则认为符合条件。你的任务就是检测矩阵是否符合条件,或者在仅改变一个矩阵元素的情况下能否符合条件。"改变矩阵元素"的操作定义为0变成1或者1变成0。输入输入n+1行,第1行为矩阵的大小n(0<n<100),以......
  • 字符数组指针巩固学习
    1、字符数组的数组名存的就是字符数组的起始地址,类型是字符指针2、str系列字符串函数主要包括strlen,strcpy,strcmp,strcatstrlen:用于统计字符串长度strcpy:用于将某个字符串复制到字符数组中strcmp:用于比较两个字符串的大小,比较对应字符的ASCII码值strcat:用于将两个字符......
  • 23:二维数组回形遍历
    描述给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按回形从外向内顺时针顺序遍历整个数组。如图所示:输入输入的第一行上有两个整数,依次为row和col。余下有row行,每行包含col个整数,构成一个二维整数数组。(注:输入的row和col保证0<row<100,0<col<100)输......
  • C++数组
    数组C++中的数组是一种特殊类型的变量,它可以存储一组具有相同数据类型的元素,这些元素在内存中是按照一定的顺序排列的。下面是C++数组的一些特点:数组的元素类型必须相同。例如,一个int类型的数组中只能存储int类型的元素。数组的大小是固定的。一旦数组被创建,它的大小就不能再......
  • [省选联考 2023] 染色数组 题解
    题目描述给定一个长度为\(n\)的正整数数组\(A\),其中每个数都在\(1\)到\(m\)之间,从左到右排成一排。现在要将每个数字染成红色或者绿色,我们定义一个染色方案为优秀的染色方案,当且仅当它满足:每个数\(A_{i}\)要么被染成红色,要么被染成绿色。红色的数从左到右依次严格递......
  • [省选联考 2023] 染色数组 题解
    题目描述给定一个长度为\(n\)的正整数数组\(A\),其中每个数都在\(1\)到\(m\)之间,从左到右排成一排。现在要将每个数字染成红色或者绿色,我们定义一个染色方案为优秀的染色方案,当且仅当它满足:每个数\(A_{i}\)要么被染成红色,要么被染成绿色。红色的数从左到右依次严格递......
  • 数组的算法
    数值型数组特征值统计这里特征值涉及到:平均值,最大值,最小值,总和等求最大值:将数组第一个元素假设为最大值intmax=arr[0];再然后用写一个判断语句如果数组第一个元素小于当前比较的元素就把当前比较的元素赋值给maxif(max<arr[i]){max=arr[i]}求最小值:定义一个变量这个数大......
  • 多维数组的使用(一)
    多维数组概述Java语言里提供了支持多维数组的语法。如果说可以把一维数组当成几何中的线性图形,那么二维数组就相当于是一个表格,像Excel中的表格、围棋棋盘一样。应用举例1:            某公司2022年全年各个月份的销售额进行登记。按月份存储,可以使用一维数组。......
  • 2488. 统计中位数为 K 的子数组
    题目链接:2488.统计中位数为K的子数组方法:前缀和+哈希解题思路根据题意可知,在\(k\)是中位数的子数组中,比\(k\)大的数\(-\)比\(k\)小的数\(=\)\(0\)||\(1\)。那么将两种状态,小于\(k\)置\(-1\),大于\(k\)置\(+1\),计算数组的前缀和\(s\)。由于子数组要包含\(k\),所有左......
  • 108. 将有序数组转换为二叉搜索树
    题目链接:108.将有序数组转换为二叉搜索树方法:递归建树解题思路每次选取中间的元素作为根节点,递归创建左右子树,就可以保证左右子树的高度差绝对值不超过1代码/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*......