1.一维数组与指针
  
    形如:int型 数组 a[10]  
              1)&a[0]  地址常量;地址类型:int *型   ; 存储数组a的首地址
              2) a        地址常量;地址类型:int *型   ; 存储数组a的首地址        即  a与 &a[0]等价 
   形如:指向一维数组的指针变量 
              如有定义: int a[10],*p;
              ①p = &a[6];     //表示将a[6]的地址赋给指针变量p
              ②p = a
                 p = &a[0]       //均表示将数组a的地址(or a[0]的地址)赋给指针变量p
   形如:指针可进行的运算
               预先定义:指针变量p,数组a[10],正整数n;
                   1)指针 ± 数值  【实际值:p±n*size |  其中size指p的基类型所占用的存储字节数】
                         p + n :指向a[i]后面的第n个元素;
                         p - n  :  指向a[i]前面的第n个元素;
                        
                         ※若定义:*p = a;
                             则: 
                                 *(a+i)   或者   a[i]
                                 *(p+i)    或者  p[i]         //四者意义:访问数组a中的第i个元素 
                            本质与区别:
                                               1.p与a数据类型均为int *型;
                                               2.p是指针变量;a是指针常量(指向不可改变)
                   2)指针 -指针 
                     前提:指向相同类型的指针变量可以相减
                      结果:两指针所指向的地址之间数据的个数(单位:数据类型,并非字节数)
                      Eg:
                           int *px,*py,n,a[5];
                           px = &a[1]; 
                           py = &a[4]; 
                           n = py - px;  //结果:n = 3
                           n = px - py;  //结果: n = -3 
        3)指针的比较运算(<,>,==,!=,<=,>=)
            实质:比较两个地址值的大小。
                          结果:1 or 0
                         Eg:px == py  //两地址相同?0:1
                              px < py    //px<py?0:1
                              px==NULL //px为空指针?0:1
                              即  真为0;假为1 
--------------------------------------------------------------------------------------------------------
元素的地址:                                                         元素的值:
        a+i   数组名法                                                        *(a+i)      数组名法                           
        p+i   指针法                                                            *(p+i)      指针法
        &a[i] 下标法                                                             a[i]        下标法  
        &p[i]下标法                                                              p[i]        下标法  
---------------------------------------------------------------------------------------------------------
典型例子1:分别求数组前十个元素和后十个元素之和
#include<iostream>
int fsum(int *array,int n) {     //通用的求和函数
     int  i,s = 0;
     for(i = 0;i<n;i++)
          s += array[i]
    return (s);

void main(void){
   int a[15] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
   int shead ,stail;
   shead = fsum(&a[0],10);   //or fsum(a,10)
   stail = fsum(&a[5],10) ;     //or fsum(a+5,10) 
}            
---------------------------------------------------------------------------------------------------------
典型例子2:比较两字符串的大小:
  int my_strcmp(char *s,char *p){
     for(;*s==*p;s++;p++)
             if(*s=='\0')  reutrn (0);  //如果都比较到最后一个字符了,那么二者相等
     return (*s-*t)>0?1:-1;     

[C++]指针和指向数组的指针[一维数组与指针]的更多相关文章

  1. PHP开发小技巧③—实现多维数组转化为一维数组

    在平常的项目开发中我们多会用到让多维数组转化为一维数组的情况,但是很多Programmer不会将其进行转化,也有些没有想到很好的算法然后经过乱起八糟的运算方式将其勉强转化好,但是所写的程序代码冗余非常 ...

  2. 二维数组转化为一维数组 contact 与apply 的结合

    将多维数组(尤其是二维数组)转化为一维数组是业务开发中的常用逻辑,除了使用朴素的循环转换以外,我们还可以利用Javascript的语言特性实现更为简洁优雅的转换.本文将从朴素的循环转换开始,逐一介绍三 ...

  3. [Swift]多维数组的表示和存储:N维数组映射到一维数组(一一对应)!

    数组:有序的元素序列. 若将有限个类型相同的变量的集合命名,那么这个名称为数组名.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.用于区分数组的各个元素的数字编号称为下标.数组 ...

  4. Python数组操作将一维数组变成二维数组

    一.问题 我们在进行数组操作的时候会遇到将一个低维的数组变成一个高维的素数组 二.解决 第一种方法基本思路就是将低维数组进行等长的循环,在第一次为零的情况下,需要添加一个[]数组,原因是将它的基本框架 ...

  5. 题目要求:传入数组 内容为[['lisi','男','27'],['wangwu','男',18],['zhaoliu','男','30']],将此二维数组转化为一维数组,创建自定义函数完成

    //自定义函数 function getOne($arr){ $str = ''; //定义空的字符串,用来接收值 foreach ($arr as $key=>$value){ //循环遍历数 ...

  6. 将二维数组转换成一维数组(基于reduce)

    reduce:不改变原数组,返回一个新的数组.就是遍历数组元素,从头开始,依次往下,第一个参数是上一次的返回值,第二个参数是下一个数组元素,首次的时候第一个和第二个参数分别是 array[0],  a ...

  7. php数组去重(一维数组)

    <?php $arr = ['1', '1', 'PHP', 'PHP', 2, 3]; print_r($arr); echo "<br>"; print_r( ...

  8. php二维数组转成一维数组

    $arr是需要转换的数组集合 array_reduce($arr, 'array_merge', array());

  9. python算法:嵌套数组转变成一维数组

    比如,输入是:[2, 1, [3, [4, 5], 6], 7, [8]] 则,输出是:[2, 1, 3, 4, 5, 6, 7, 8] def list_flatten(l, a=None): a ...

  10. C++入门经典-例6.10-将多维数组转换成一维数组

    1:代码如下: // 6.10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> usin ...

随机推荐

  1. Delphi导出数据的多种方法

    //Dxdbgrid,则直接用SaveToexcel即可//使用 ExcelWithOdbc 控件function TDataModule1.GetDataToFile(DsData: TObject ...

  2. js日期

    常用函數: 創建一個日期對象 var ss =new Date(): 獲取一周的天數: ss.getDay(); 獲取1970年1月1日到現在的毫秒數: getTime(): 設置具體的日期: set ...

  3. 同步工具:CountDownLatch、CyclicBarrier和Semaphore

    1. CountDownLatch 1.1 功能及使用场景 一个同步工具,使得一个或多个线程等待一组线程执行完成后再执行. 使用场景:等待一些前置任务执行完成后,再执行特定的功能.比如,系统启动时,各 ...

  4. 自学Linux Shell12.6-嵌套循环for命令

    点击返回 自学Linux命令行与Shell脚本之路 12.6-嵌套循环for命令 嵌套循环就是在一个循环中还有一个循环. 内部循环在外部循环体中,在外部循环的每次执行过程中都会触发内部循环,直到内部循 ...

  5. Selenium之WebDriver元素定位方法

    Selenium WebDriver 只是 Python 的一个第三方框架, 和 Djangoweb 开发框架属于一个性质. webdriver 提供了八种元素定位方法,python语言中也有对应的方 ...

  6. SPOJ GSS系列

    众所周知的仅次于ynoi的毒瘤数据结构系列.(跟Qtree系列并列?) GSS1: 长度为 $n$ 的序列 $a$,$m$ 个询问,每次询问区间 $[l,r]$ 之间的最大子段和. $1\le n,m ...

  7. MySQL之汇总数据(AVG,COUNT,MAX,MIN,SUM)

    table test Field Type Null Key Default Extra id int(11) NO PRI NULL auto_increment name char(50) NO ...

  8. noip2013火柴排队_Solution

    要想对任意(ai,bi)和(aj­和b­j),当ai<aj时,都有bi<=bj:当ai>=aj时,bi>=bj,当对a进行升序排序后(b同时发生改变,从而不改变值,最后有a1& ...

  9. ActiveMQ集群简单测试+eclipse Zookeeper 插件 + 负载均衡

    ActiveMQ集群搭建好之后,接下来就该测试一下了. 一.先安装Zookeeper 的eclipse插件吧. 1. 打开 eclipse, Help -> Install New Softwa ...

  10. aop 初探

    1.首先是配置文件: 上图是让aop配置正确,不报红: 完整代码: <?xml version="1.0" encoding="UTF-8"?> & ...