利用*p++遍历

*p++, 这里的p是表示指针,而++运算优先于*(当然不是乘号,仅仅指的是指针的运算符),首先给p增加一个1(所指向的地址移动到下一个‘变量‘的起始点),相当于 p[n] 变成了 p[n+1] 。然后是*, 即提取这个指针所指位置的变量值。即 先移动指针再提取值。对比两种遍历:

#include <stdio.h>

int main(void)
{
    int list[] = {1, 2, 3, 4, 5, -1};
    int *p = list;
    int i=0;
    while (*p != -1)
        printf("%d\n", *p++);

    while (list[i] != -1)
    {
        printf("%d\n", list[i]);
        i++;
    }
    return 0;
}

注意:

1. list最后由一个标志符号:-1;

2. 第一种while里面只有一句,第二种两句。

3. 汇编语言中有对应*p++的操作,这其实是一步操作,所以速度更快。

时间: 2024-10-14 00:54:02

利用*p++遍历的相关文章

C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值

转自goldeneyezhang原文 C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值 C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值总结: 对应某个类的实例化的对象tc, 遍历获取所有属性(子成员)的方法(采用反射): Type t = tc.GetType();//获得该类的Type //再用Type.GetProperties获得PropertyInfo[],然后就可以用foreach 遍历了 foreach (PropertyInfo pi

利用循环遍历的方式判断某个对象是否属于这个数组

<!doctype html><html > <head> <title>利用循环遍历的方式判断某个对象是否属于这个数组</title> <meta charset="UTF-8"> </head> <body> <!-- 利用循环遍历的方式判断某个对象是否属于这个数组; 不属于这个数组时,把这个对象填充到数组里面去: --> </body></html>

利用VBA遍历Excel所有sheet的例子

下面是利用VBA遍历Excel sheet的例子,可以用于Excel的批量处理. Sub Insert_CodeString() Dim fs, ft As Object Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim Sql As String Sql = "truncate table code_string;" & Chr(10)

249 递归:概念,利用递归求1~n的阶乘,利用递归求斐波那契数列,利用递归遍历数据

6.1什么是递归 递归:如果一个函数在内部可以调用其本身,那么这个函数就是递归函数. 简单理解: 函数内部自己调用自己, 这个函数就是递归函数 注意:递归函数的作用和循环效果一样,由于递归很容易发生"栈溢出"错误(stack overflow),所以必须要加退出条件return. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"&g

Undefined offset原因以及解决办法-php利用for遍历二维数组方法-二维数组怎么遍历

<?php $arr3 = [ [1,2,3], [4,5,6,7], [8,9,10,11,12], ]; $len = count($arr3); $num2 = 0; $zong = 0; for($i = 0; $i < $len; $i++) { $tem = $arr3[$i]; $len2 = count($tem); for($j = 0; $j < $len2; $j++) { $num2 += $tem[$j]; $zong++; } } echo "<

WPF利用VisualTreeHelper遍历寻找对象的子级对象或者父级对象

简介 本文将完整叙述我利用VisualTreeHelper实现题述功能的全部过程,想直接看函数实现的朋友可以跳到函数实现部分. 或者直接在GitHub上下载源码. 在WPF中我们经常会遇到这种情况:当我们尝试着去寻找窗体或者页面中某个控件的子控件或者父控件的时候,我们只能寻找到它的第一级的逻辑子级对象或者父级对象.当我们想更深入的时候,就没有办法了. 甚至在我们自定义的DataTemplate中的控件,我们都没办法对其访问.比如在ListView中自定义的控件,我们就没办法获取指定位置的控件了.

利用层序遍历(不含None)和中序遍历重建二叉树 python

给定一颗二叉树的层序遍历(不含None的形式)和中序遍历序列,利用两个序列完成对二叉树的重建. 还是通过一个例子来说明整个过程,下图所示的二叉树,层序遍历结果为[a,b,c,d,e],中序遍历结果为[d,b,a,c,e],我们知道当我们找到根节点后,中序遍历能够提供给我们的信息就是左右子树分别包含哪些节点,而我们能否在层序遍历中找到根节点呢?很明显,层序遍历序列的第一个点是根节点,在中序遍历中找到左右子树分别包含哪些节点之后,我们就可以在层序遍历中区分出左右子树的层序遍历结果,然后就可以分别开始

数据结构:关键路径,利用DFS遍历每一条关键路径JAVA语言实现

这是我们学校做的数据结构课设,要求分别输出关键路径,我查遍资料java版的只能找到关键路径,但是无法分别输出关键路径 c++有可以分别输出的,所以在明白思想后自己写了一个java版的 函数带有输入函数也有已经存进去的图 如上图关键路径被分别输出(采用了DFS算法): 例:AOE 图如下: 算法设计如下: 1. 首先,要求关键路径,要先要先写拓扑排序,如果图中有环,就无法进行关键路径的求解,直接跳出. 拓扑排序:利用栈stack,先将入度为0事件节点的加入栈中,然后编历后面的活动节点,每次给活动节

利用前序遍历和中序遍历构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / 9 20 / 15 7 思想:利用分治的思想来解决该题 具体解题步骤: 1.根据先序遍历,我们可以知道根节点就是给定数组的第一个元素pre[0],那么我们就可以在中序遍历中找出值等于pre[0]的位置,该位置的前半部分就是左子树,右半部分就是右子树, 2.重