黑马程序员————数组,字符串,函数,指针

            ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


一. 数组的基本概念

  •      只能存放一种类型的数据,比如int类型的数组、float类型的数组

  •     里面存放的数据称为“元素”


二数组的定义

1.     定义

       声明数组的类型

       声明数组的元素个数(需要多少存储空间)

2.     格式

元素类型 数组名[元素个数];

比如:int ages[3];

3.     简单使用

       简单初始化:intages[5] = {19, 19, 20, 21, 25};

       元素有顺序之分,每个元素都有一个唯一的下标(索引),从0开始

       数组元素的访问:a[i]

4.     初始化

       初始化方式

       int a[3] = {10, 9, 6};

      int a[3] = {10,9};

      int a[] = {11, 7, 6};

       int a[4] = {[1]=11,[0] = 7};

        常见错误

       int a[];

      int[4] a;

      int a[b];

      a = {10, 11};

      a[4] = {10,9,8,5}; 

5.     内存分析

       数组存储空间的大小

       存储空间的划分(内存的分配是从高地址到低地址进行的,但一个数组内部元素又是从低到高进行的)

       数组名的作用,查看元素地址


三、  字符串

1.     字符串的初始化

       char a[] = “123”;  和 char a [] = {‘1’,’2’,’3’};的区别,可以比较大小

      “123”其实是由’1’、’2’、’3’、’\0’组成

       “123”的存储分布

        字符串的输出”%s”,’\0’是不会输出的


strlen:计算字符串长度,直到遇到第一个"\0"为止。

  • 计算的是字符数,并不是字数。
  • 计算的字符不包括"\0"

sizeof:计算数据(基本类型,构造类型)所占内存空间,用字节数表示,计算字符数组时,包括"\0"在内。


四.函数

     任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”。所以,你可以说C语言程序是由函数构成的。

4.1     函数的定义

1.     定义函数的目的

     将一个常用的功能封装起来,方便以后调用

 

2.    定义函数的步骤

        函数名:函数叫什么名字

       函数体:函数是干啥的,里面包含了什么代码

 

3.     格式


返回值类型  函数名(形式参数列表)

{

        函数体

}


1) 函数的返回值通过函数中的return语句来获得

2) 函数类型与return语句中表达式的类型应尽量保持一致,若函数类型与return语句中表达式值类型不一致,则以函数类型为准自动进行类型转换

3) 函数和变量一样,必须先说明,后使用,即调用函数之前必须定义函数

4) 实参与形参个数相等,类型一致,按顺序一一对应.

5) 无论是调用有参还是无参函数,函数名后面的括号都有不可省略

6) 参数的传递方式:

值传递

      实参对形参的数据传送是单向的.即只能把实参的值传送给形参,而不能把形参的值反向地传送实参,实参和形参占用不同的内存单元,所以实参与形参同名也不会相互影响

 

地址传递

 与值传递不同的是,地址传递方式传递的不是数据内容本身,而是存储数据的内存单元地址。例如,当数组名作为实参时,参数间传递就是地址。

7) 递归的执行过程

       递归函数的执行过程分为两个部分:函数的递推过程了函数的回推过程。函数的递归调用和剥竹笋类似,一层一层地由外向内调用。

       函数的回推过程即是函数退出的过程,它的顺序与函数的递归顺序正好相反,一层一层一层地由内向外退出。


  4.2 函数的返回值

  •    如果没有写返回值类型,默认是int
  •      void可以省略return

  •        可以多次使用return

  •        return后面不能有其他语句

    4.3    只有函数声明、没有定义,编译警告、链接报错


      4.4  .h文件和.c文件的分工

         抽取步骤总结

         .c文件写函数的定义

          .h文件写函数的声明

          要想用我的函数,请包含我的.h文件


       五.   指针

    1.     定义的格式

       类名标识符  *指针变量名;

           int *p;

    2.     先定义后赋值

          简单取值

    int a = 10;

    int *p;

    p = &a;

    printf(“%d”, *p);

          简单改值

    *p = 9;

    3.     定义的同时赋值

    int a = 10;

    int *p = &a;

    4.     实现修改实参

    5.     注意点

         int *p;   p = 1000;

         int *p;   *p = 100;

          int *p;  *p = &a;

         %p输出指针里面存储的地址值

         其他指针类型说明,比如float*p;  char *p;

         不能乱用类型,比如int a =10;  float *p = &a;

    6.     清空指针

         p = 0;

         p = NULL;

    六.    指针与数组

    int  a[ ]={1,2,3};

    int *p=a;

    p=&a[0]或p=a  //数组名a代表数组的首元素地址

     p+1=&a[1]


    数组元素的访问方式:

    • a[2]
    • p[2]
    • *(P+2)

    七.指针与字符串

    char *p="it";
    定义字符型指针变量p,并且指向字符串的首字符

    注意点:
    • 指针指向的字符串不可以更改
    • 数组存放的字符串可以更改

    八指针与函数

    void (*p) (  );//定义了一个指向函数的指针变量
    • void:指针变量p指向的函数没有返回值
    • 右边(   ):指针变量p指向的函数没有形参
    函数名代表函数的地址

    调用函数的方法      p=test     //test是函数名
    • (*p)(  )
    • test(   )
    • p(   )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值