zoukankan      html  css  js  c++  java
  • C语言数组篇(一)一维数组

       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= 0; i<3;i++){
             a[i] = i;
         }

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

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

            在数组中,
       
         a[0] = 10;  //数组版
         *p = 10;    //指针版
    
         a[2] = 20;    //数组
    *(p+2) = 20; //指针版
            首先,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[10] = {1,3,2,5,6,4,9,7,8,0}; //定义一个数组 // 1. 我们的思想就是把这个数组的地址传递过去就可以了,那么实现这个功能,要怎么设计sort函数呢? sort(a); //实参 }

            这里先介绍一下4个函数:
            strcpy(s1,s2); //将s2复制给s1,一旦在s2中遇到'', 就停止函数.

            strcat(s1,s2); //将s2接在s1末尾.

            strlen(s1); //返回s1的长度

            strcmp(s1, s2); //比较两个字符串,如果s1 == s2 ,则返回0, s1< s2 返回值小于0, s1>s2 返回值>0 .
  • 相关阅读:
    求一个二维数组的最大子矩阵
    在一整型数组中找到此数组中子数组和的最大值
    软件工程个人小项目:写一个程序,分析一个文本文件(英文文章)中各个词出现的频率,并且把频率最高的10个词打印出来
    Redis 为什么这么快?
    在netfarmerwork3.5版本的winform下执行string串中的代码
    c# 反射(Reflection)详解
    string,特殊的引用类型
    c#使用HashSet<T>集合去重
    c# .Net重试机制
    观察者模式
  • 原文地址:https://www.cnblogs.com/kmist/p/10053789.html
Copyright © 2011-2022 走看看