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. hibernate课程 初探一对多映射1-1 课程简介

    hibernate 常见映射类型 one-to-many many-to-one one-to-one many-to-many

  2. 深入理解java虚拟机阅读笔记(1)运行时数据区域

    java虚拟机所管理的内存区域主要分为方法区.堆:虚拟机栈.本地方法栈.程序计数器,如图: 1.程序计数器是当前线程所执行的字节码行号指示器,用以记录当前指令执行的位置.程序计数器是线程私有的,每个线 ...

  3. 从零开始的全栈工程师——js篇(js的异步)

    js中的异步 Javascript语言的执行环境是"单线程"(single thread,就是指一次只能完成一件任务.如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任 ...

  4. 开启win7笔记本自带无线功能

    在cmd中输入以下命令: netsh wlan set hostednetwork mode=allow /disallow netsh wlan set hostednetwork ssid=Myw ...

  5. UDoc(云平台企业应用级 文档管理产品)

    类型: 定制服务 软件包: integrated industry solution collateral 联系服务商 产品详情 解决方案 概要 为企业提供基于云平台企业应用级文档管理产品,尽可能最大 ...

  6. html+javascript+soap获取webservice免费天气预报信息

    转自:http://blog.163.com/hubeimeiyu@126/blog/static/8004881020118303318687/ 首先,也是最重要的是互联网上免费的天气预报源:htt ...

  7. Windows server R2 2008上部署gogs git

      所需的环境 1.     安装mysql                       安装路径:F:\MySQL Server 5.7 2.     安装gogs                  ...

  8. centos7.3上用源代码安装zabbix3.2.7

    安装zabbix之前请自行先搭建好LAMP环境! 1.下载源码安装包并解压 1.1 下载 [root@nmserver- ~]# mkdir zabbix [root@nmserver- ~]# cd ...

  9. Installing xgboost and cmake, mingw64 and mingw

    Problem: installing the xgboost to get the python package for later importing

  10. 如何使用Win32API绘制树

    一.这个已经有几年时间了,刚开始学习charlie的<windows程序设计>的时候做的.现在看来,代码很乱,虽然后来还整理过几次,现在这方面没什么兴趣了,有兴趣的可自由下载. 二.绘制二 ...