Linux C 数组与指针

Linux C 数组与指针

1.1数组的基本概念

        在程序设计中,为了方便处理,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。

        数组(Array)也是一种复合数据类型,它由一系列相同类型的元素(Element)组成。

1.2数组的定义

        一维数组:
        int a[10]={1,2,3,4,5,6,7,8,9,0};   (int a[10];)  
        数组中元素类型 数组名称[数组中元素个数]={元素0,元素1,....};

        二维数组:

        int a[5][3]={{1,2,3}{4,5,6}{7,8}{0,0,9}{1,0,2}};
                                              ↓
                           不足3个自动补零,不允许前面或中间省略,如要省略,请手动加零。
        数组a有5个元素,a[0]--a[4]。 每个元素也是一个数组,如a[0]是一个数组,它有3个元素a[0][0],a[0][1],a[0][2],
        这3个元素类型是int 分别为 1,2,3。
       概念模型:
                                                                                            
         物理模型:
                                     
        数组中所有元素都是同一种类型,不存在统一数组中两种数据类型。

1.3数组的使用

        数组定义的时候作为一个整体定义的,但是用的时候不能作为整体来使用,使用时,必须拆开使用数组中的各个元素。

        比如,数组 int a[10]={1,2,3,4,5,6,7,8,9,0};使用其中的元素时,需用a[0],a[1]..a[9]表示,[]是数组的标志,[]中的数字表示数组的下标,也叫索引。下标是0代表数组的第一个元素,1代表第二个,以此类推。如果是n个元素,最后一个元素的下标为n-1。

         访问数组时要注意下表,下标是从0开始,如果下边超出了n-1,会产生越界访问①,结果是不可预期的。

1.4数组的初始化

        数组的初始化是为了让对象有一个初始的预定状态,数组的初始化分为两种

        第一种:完全初始化。依次赋值。

        第二种:不完全初始化,初始化中的值从a[0]开始赋值,不足的用0填充赋值。

2.1指针的基本概念

        所谓指针式用来指示一个内存地址的计算机语言的变量或中央处理器中的寄存器。指针一般指向一个函数或一个变量,在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址,又可以使用这个地址里储存的变量或函数值。

2.2指针的定义

        int i;

        int *pi=&i;

        char c;

        char *pc=&c;

        这里的&是取地址运算符,

        &i表示取变量i的地址,

        即: 类型说明符 *指针名=&变量名;

        int *pi=&i; 表示定义一个指向int型的指针变量pi,并用i的地址来初始化pi。

        在同一语句中定义多个指针变量,每一个都要有*号

        如: int *p,*q;

        如果要让pi指向另一个整型j,可以重新对pi赋值:pi=&j;。

        如果要改变pi所指向的整型变量的值,比如把变量j的值增加10,可以写成: *pi=*pi+10;。

        指针之间可以相互赋值,也可以用一个指针初始化另一个指针,如:int *ptri=pi;

        表示pi指向哪里,就让ptri也指向哪里,本质上就是把变量pi所保存的地址值赋值给变量ptri。

        用一个指针给另一个指针赋值时要注意,两个指针必须是同一类型的。如果不是需要先强制类型转换,然后赋值

        如:pi=(int *) pc;

2.3指针简单的使用

        以下内容在VS中书写。

        

2.4指针变量作为函数参数

        函数的参数不仅可以是整型,实型,字符型等,也可以是指针类型。

        它的作用就是将一个变量的地址传送到另一个函数中。

例:


结果:


-------------------------------转载请注明出处

①越界访问:

定义的数组如果分配了10个元素的空间,但是访问了第11个元素,就属于越界。

当出现越界时,由于无法得知被访问的空间的内容及功能,所以会出现不可预知的后果。

可能出现程序的崩溃,也可能运算结果非预期,或者毫无影响。

           
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值