0.  数组的两种表现形式
        一种是常见的a[10];          //初学者常用
        另一种是用指针表示的数组.   //实际工程使用.常用于参数传递
        因为数组也是指针啊.
   1.  一维数组的定义
        数组是一批相同数据的集合 .
        如果说 int a; 是在内存中开辟了一个int大小的空间,
        那么 int a[10] 就是表示在内存中开辟了10个 连续的 int大小的空间,总大小为 10 * sizeof(int).
        注意,数组开辟的空间是连续的 .
   2.  数组的组成 .地址 大小 和 空间   
        就如同普通变量 int a = 10; 一样,数组也有 3要素组成.
        auto int a[10];
        在内存中开辟了一个超大的空间,这个空间有一个名字叫做 a,a即是名称,也是这段空间的地址 叫首地址.
        这个超大空间分为10个小空间,每个小空间的大小是 int 大小.
        这个也是默认放在栈空间auto.
 
 3. 数组的初始化
        数组的初始化有两种情况:
            第一次初始化专用
            非第一次初始化
            第一次初始化: int a[3] = {2,3,4};   //这种大括号的初始化方式只能用于第一次初始化的情况下,往后赋值或者取值,只能用循环的方式来实现.
            非第一次:

   int i;
for(i= ; i<;i++){
a[i] = i;
}

  注意:数组的下标是从0开始的 .

3. 一维数组和指针.!!!!!
        
        定义一个指针,指向 int a[10] 的首地址
        int *p = a;
        或者
        int *p;
        p = a; //注意这里不是&a,因为a作为数组名, 本身就是地址 .
        在数组中,

     a[] = ;  //数组版
*p = ; //指针版 a[] = ;   //数组
*(p+) = ; //指针版
        首先,p = a,代表着首地址 ,比如是0xA0
        那么 p+1 是什么意义? p+1 表示,在首地址的基础上,往下偏移1个空间量 那p+1=0XA1吗?? 不是的,因为这个数组的一个空间量是int大小 ,所以它的地址 应该是 0XA0+(sizeof(int) * 偏移量) //0XA4
        然后再进行*运算代表取值.
        数组指针操作的基本思想就是,在首地址的基础上,进行指针偏移,然后进行取值和赋值操作
        
        //例子,数组指针的实际用途
        //对数组 int a[10]进行排序
        //思路: 写一个排序函数,然后把数组的指针作为参数传递进去
// 2. 首先,我们传进来的是一个数组指针,那么,数组a的指针怎么写呢// 数组a[10] 的指针是 int *p = a;
//所以设计函数的时候,形参部分就可以写,int *p, 即数组的形参.
int sort(int *p){ //形参
//...具体功能
} int main(){
  int a[] = {,,,,,,,,,}; //定义一个数组
// 1. 我们的思想就是把这个数组的地址传递过去就可以了,那么实现这个功能,要怎么设计sort函数呢?
sort(a); //实参
}

        这里先介绍一下4个函数:
        strcpy(s1,s2); //将s2复制给s1,一旦在s2中遇到'\0', 就停止函数.
        strcat(s1,s2); //将s2接在s1末尾.
        strlen(s1); //返回s1的长度
        strcmp(s1, s2); //比较两个字符串,如果s1 == s2 ,则返回0, s1< s2 返回值小于0, s1>s2 返回值>0 .

C语言数组篇(一)一维数组的更多相关文章

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

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

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

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

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

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

  4. 【C语言】12-指向一维数组元素的指针

    一.用指针指向一维数组的元素 1 // 定义一个int类型的数组 2 int a[2]; 3 4 // 定义一个int类型的指针 5 int *p; 6 7 // 让指针指向数组的第0个元素 8 p ...

  5. 【C语言学习】-04 一维数组、字符数组

    一维数组.数组排序.字符数

  6. 第二篇 javascript一维数组和二维数组及方法

    一.数组 什么是数组 程序=数据+算法 数组就是一种很常见的保存批量数据的数据结构 一.定义数组 var arr1=[]; //定义了一个不包含元素的数组 ,,]; //定义了一个包含三个元素的数组 ...

  7. [C++]指针和指向数组的指针[一维数组与指针]

     1.一维数组与指针      形如:int型 数组 a[10]                1)&a[0]  地址常量;地址类型:int *型   ; 存储数组a的首地址          ...

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

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

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

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

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

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

随机推荐

  1. poj 1947 树形背包

    重做这道题 http://blog.csdn.net/woshi250hua/article/details/7632785 http://blog.csdn.net/shuangde800/arti ...

  2. maven课程 项目管理利器-maven 4-1 使用maven创建web项目 5星

    本节主要讲了使用maven创建web项目 主要分这三大类: 1 新建maven  web项目 2 后续处理普通java项目转web项目需要关注的点 3 maven特色转web需要关注的点 1 新建ma ...

  3. appium(四)交互分析

    转自:http://blog.csdn.net/Yejianyun1/article/details/56017360 一.简介 英文官网:appium官网 Appium跨平台.开源的自动化测试工具, ...

  4. django 定制admin

    https://www.cnblogs.com/liwenzhou/p/9519321.html

  5. VS2015卸载方法

    VS2015卸载 直接再控制面板的卸载程序中找到 VS2015 的程序,邮件更改,安装程序会被打开,里面有三个选项包含卸载,点击卸载[记得在卸载前如果有打开过 VS 最好重启一下,重启后不要打开 VS ...

  6. Ajax使用 初始化数据 + mvc

    2017-3-16 mvc+jquery+easyUI做项目 <input type="text" id="txtSTQty" name="tx ...

  7. VM(xp系统下用虚拟机安装win8 提示 :units specified don't exist, SHSUCDX can't install)解决方法

    改成IDE的模式

  8. 笨办法学Python(二十二)

    习题 22: 到现在你学到了哪些东西? 这节以及下一节的习题中不会有任何代码,所以也不会有习题答案或者加分习题.其实这节习题可以说是一个巨型的加分习题.我将让你完成一个表格,让你回顾你到现在学到的所有 ...

  9. Altium_Designer-怎么将“原理图的更改”更新到“pcb图”?

    打开原理图,直击菜单栏>>Design,选择第一项,>>Update PCB Document...在弹出的对话框里面选择执行更改即可将原理图更新到工程下面对应的PCB.也可以 ...

  10. QT Creater 配色方案及下载

    打开QT Creater的工具--选项--文本编辑器--字体和颜色,复制一份配色方案:Vim (dark) ->Vim (dark) (copy) 更改想更改的任何内容的配色.其中,修改后的文件 ...