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

2023-05-16

            ------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(   )

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

黑马程序员————数组,字符串,函数,指针 的相关文章

  • Debian11最小系统安装中文字体

    起因 xff1a 因为要用远程服务器作为桌面系统 xff0c 节省内存资源 xff0c 最小化安装了debian11 6 xff0c 但是再浏览器中打开中文网站 xff0c 部分文字显示是乱码 所以安装一些字体 xff0c 使之能够正确显示
  • 电子公告板-基于PHP和JSP,也可作为聊天工具,跨平台,跨网络传递文字信息

    主要作用 xff1a 基于PHP和JavaScript编写了一个聊天工具 xff0c 部署在支持php的vps或者主机空间上即可 最初的想法是用于将远程桌面上chatgpt生成的内容 xff0c 直接cp下来 xff0c 但同时不想给仅有1
  • KVM虚拟机的磁盘无损扩容方法-qcow2格式的

    起因 xff1a 我的KVM主机上安装了基于Debian11的 虚拟机母鸡 xff0c 其他虚拟机都由此克隆而来 因为最初只配置了8G的虚拟硬盘 xff0c 因此在需要占用比较大的空间的应用时 xff0c 就比较麻烦 度娘等中文搜索结果没找
  • Nginx 和 php-fpm 间的调用关系

    起因 xff1a 之前配置nginx和php fpm 在同机上进行 xff0c 很顺畅 xff0c 近期实验了一下 nginx php mysql 服务分别独立 xff0c 花费了好久才配置好 xff0c 真正理清两者间的联系 这里记录一下
  • Debian11及Alpine Linux中机械硬盘的休眠设定

    hard disk standby 硬盘的待机 hdparm 软件 0 安装 hdparm Debian 中 apt update apt install hdparm Alpine Linux中 apk update apk add hd
  • Centos7.6_1810安装LEMP过程详解(nginx1.14.2+php7.3.1+MariaDB10.3.12)

    经过两天的搜索和学习 xff0c 终于在CentOS7 6 1810版本的最小化安装服务器上完成了LEMP搭建 xff0c 全都用的是最新的稳定版组件 xff08 截止2019 01 26 xff09 xff0c 这里做个记录 xff0c
  • CentOS7.6_1810安装最新版的java11.02和tomcat9.0.14的记录

    所谓的最新版 xff0c 是指到2019 01 28为止的最新版 1 JAVA SE 的安装 java的安装比较简单 xff0c 按照官网的说明 xff0c 下载rpm包安装就好 用wget下载或者在windows系统上下载好rpm包 xf
  • CoreOS Linux 最新2023.5.0版的安装过程-2019-03-28

    注意 xff1a 该操作系统已经被Redhat收购 xff0c 不再更新 xff0c 而是变更为了 Fedora CoreOS系统 xff0c 可看我的文章 xff1a Fedora CoreOS 的裸机安装方法 lggirls的博客 CS
  • 【数据挖掘】5分钟带你了解文本向量化的常见方式

    5分钟带你了解文本向量化的常见方式 1 独特编码模型 2 词袋模型 3 TF IDF模型 4 N gram模型 5 Word2Vec模型 参考资料 文本向量化 将文本信息表示成能够表达文本语义的向量 是 用数值向量来表示文本的语义 词嵌入
  • 裸机安装CoreOS Linux最新2023.5版本后的简单配置(一)

    关于裸机安装方法 xff0c 请看我的博文 CoreOS Linux 最新2023 5 0版的安装过程 2019 03 28 https blog csdn net lggirls article details 88867762 一 更改
  • CoreOS 不重装而使用json文档更新系统配置的方法2019-03-29

    CoreOS在启动过程中 xff0c 先加载内核 xff0c 内核再加一个参数 xff0c 来判断是不是第一次启动 如果第一次启动 xff0c 就执行ignitoin配置 通过研究 xff0c 在 boot coreos下touch一个名称
  • docker 搭建 nginx网站

    一 从网上下载一个html5的单页网站模板 xff0c 解压 xff0c 将文件夹改名为html xff0c 重新压缩为html zip格式 二 在docker宿主机上的自定义网站内容存储文件夹内下载上一步的html zip文档 三 解压
  • docker 搭建多容器LNMP平台遇到的坑

    1 采用什么样的镜像很重要 必须是php 7 3 fpm 采用默认的latest镜像是不行的 xff0c 所以 docker pull php 7 3 fpm 现在有了7 4 fpm docker pull nginx docker pul
  • docker php 扩展安装合集

    在安装SuiteCRM的过程中遇到了 没有zip扩展功能的问题 xff0c 经过一番折腾 xff0c 找到了这个文章 xff0c 在此转发分享 xff0c 希望对其他人有所帮助 1 先进入myphp容器 xff0c 看一下php目前安装了哪
  • SuiteCRM的汉化

    以管理员账户进入suitecrm 选择 admin xff0c 滚动页面 xff0c 找到下面 Developer Tools下的Module Loader项目 上传下载好的汉化包 点击下载后在该项目上出现的 INSTALL xff0c 完
  • docker 搭建odoo ERP服务器

    按照官方教程来操作即可 xff1a https hub docker com odoo 环境 xff1a Linux CoreNAS 4 19 25 coreos 1 SMP Sat Mar 9 01 05 06 00 2019 x86 6
  • 使用docker 搭建 ftp文件服务器

    A 使用fauria vsftpd创建ftp 这个最简单 xff0c 推荐使用 docker run itd name ftp h ftp p 20 20 p 21 21 p 21100 21110 21100 21110 v home v
  • 为Coreos系统安装docker-compose 命令

    不知为什么 xff0c 官方版的CoreOS操作系统安装了docker 但就是没有docker compose命令 xff0c 使得通过 yaml配置容器的方式无法进行 xff0c 因而需要进行手动安装这一工具 在CoreOS中 xff0c
  • 用笔记本做路由器共享4G流量

    有一张电信的4G手机卡 xff0c 每个月40G的高速流量 xff0c 但总是用不完 xff0c 所以考虑将手机开放热点 xff0c 用家里的废弃笔记本装CentOS7系统 xff0c 做个NAT xff0c 再接一个TP link 5口交
  • 【AIGC】手把手使用扩散模型从文本生成图像

    手把手使用扩散模型从文本生成图像 从 DALLE 到Stable Diffusion使用diffusers package从文本prompt生成图像参考资料 在这篇文章中 xff0c 我们将手把手展示如何使用Hugging Face的dif

随机推荐

  • 验证win10下解决某些word文档提示”内存或磁盘空间不足”的几种方法

    验证win10下解决某些word文档提示 内存或磁盘空间不足 的几种方法 编者 xff1a 李国帅 qq xff1a 9611153 微信lgs9611153 时间 xff1a 2020 03 11 背景原因 前段时间把系统升级到了win1
  • windows下配置apache+php环境

    PHP 配置PHP7 43 Apache2 4 环境 首先讲一下电脑环境与版本 电脑 window10 X64 Apache httpd 2 4 33 o102o x64 vc14 r2 zip xff08 官网下载http www apa
  • Content-Type引发的服务端收不到HTTP请求参数的问题

    问题现象 xff1a 前端POST请求参数已经传过来了 xff0c Java后端Debug也能进到请求里 xff0c 可就是取不到请求参数 用Chrome 开发者工具可以看到请求的不同 xff1a 可以看到请求参数一个在Form Data中
  • C++中两个头文件相互引用

    这种做法很显然会出错 xff08 定义一个头文件需要先引进这个头文件自己 xff0c 编译必然报错 xff09 解决方法 xff0c 在头文件中声明另一个类 xff0c 再在源文件中引入头文件 xff0c 就像这样 xff1a a h cl
  • 安装teamveaver时 报错 未安装软件包 libqt5qml5 记录一下

    iser 64 iser 下载 sudo dpkg i teamviewer 15 11 6 amd64 deb sudo iser 的密码 xff1a 正在读取数据库 系统当前共安装有 217060 个文件和目录 正准备解包 teamvi
  • Django教务管理系统|学生选课系统(关注下载源码)

    关注即可下载源码 写在前面 采用Django框架以及MySQL数据库实现BS架构的教务管理系统 xff0c 网页界面模仿了正方软件股份有线公司开发的教务管理系统 题目 建立一个学生选课系统 编写应用程序完成系统开发 建立基本表 xff1a
  • c/c++|解线性方程组的迭代法(高斯-赛德尔迭代法)

    span class token macro property span class token directive keyword include span span class token string lt bits stdc 43
  • C++ 字符(char)转字符串(string)

    char转string 误区 无法使用to string 方法 span class token keyword char span c span class token operator 61 span span class token
  • B树和B+树

    B树 上图是一颗完整的5阶B树 xff0c 符合以下特点 xff1a 对于一个m阶B树 xff0c 每个节点最多有m个分支 xff1b 根节点且不是叶子节点则至少有2个分支 xff0c 而非根非叶节点至少有m 2 xff08 上取整 xff
  • R-Tree

    R Tree R Tree是一颗用来存储高维数据的平衡树 xff0c 它把B树的思想扩展到了多维空间 xff0c 采用了B树分割空间思想 xff0c 并在添加 删除操作时采用合并 分解节点的方法 xff0c 保证树的平衡性 数据结构 每个R
  • 【AI炼丹术】写深度学习代码的一些心得体会

    写深度学习代码的一些心得体会 体会1体会2体会3总结内容来源 一般情况下 xff0c 拿到一批数据之后 xff0c 首先会根据任务先用领域内经典的Model作为baseline跑通 xff0c 然后再在这个框架内加入自己设计的Model x
  • win10配置MMClassification+PyTorch+CUDA

    Win10配置MMClassification 依赖 Python 3 8CUDA 10 2Microsoft Visual C 43 43 14 0PyTorch 1 10 0MMCV 1 3 17MMClassification 0 1
  • 逢七过

    试题描述 相信大家都玩过这个游戏 xff0c 一群人围坐一圈 xff0c 开始喊数 xff0c 是7的倍数或者数中含有7的均要说 过 xff0c 其余的数就直接说出数的大小 为了简化问题 xff0c 我们规定 xff0c 对于下面的情况我们
  • 斐波那契数列

    试题描述 斐波那契数列指的是这样一个数列 xff1a 1 1 2 3 5 8 13 21 34 这个数列从第三项开始 xff0c 每一项都等于前两项之和 请你输出斐波那契数列的前N项 xff08 0 lt N lt 30 xff09 请用循
  • 允许并列的排名

    试题描述 在我们参加的各种竞赛中 xff0c 允许并列的排名方式是经常遇到的 例如有四名选手的成绩分别为50 80 50 30分 xff0c 则80分的选手为第一名 xff0c 50分的两名选手均为第二名 xff0c 30分的选手为第三名
  • n位水仙花数

    试题描述 n位水仙花数是指一个n位数 xff0c 它的每个位上的数字的n次幂之和等于它本身 例如 xff1a 三位水仙花数是指一个三位数 xff0c 它的每个位上的数字的3次幂之和等于它本身 xff08 例如 xff1a 13 43 53
  • 成绩的最高分问题

    试题描述 编写函数ReadScore 和FindMax xff0c 输入某班学生某门课的成绩和学号 xff08 最多不超过40人 xff09 xff0c 当输入为负值时 xff0c 表示输入结束 xff0c 用函数编程通过返回数组中最大元素
  • xcode编译静态库时:**** is not an object file (not allowed in a library)

    出现此错误 xff1a 第一步 xff1a 链接的库是否是存在的且正确的库 a 第二步 xff1a 如果还出现错误 xff0c 那么确定Xcode搜索库路径 Library search paths xff0c 是否有错误 如果在工程目录中
  • Ubuntu桥接模式下无法连接网络的问题

    新装的VMware虚拟机 xff0c 作为开发 xff0c 需要使用桥接模式 xff0c 但是一直无法正常连接网络 xff0c ifconfig一直没有IPV4地址显示 xff0c ping外网也不通 网上的方法也几乎试了个遍 xff0c
  • 黑马程序员————数组,字符串,函数,指针

    Java培训 Android培训 iOS培训 Net培训 期待与您交流 xff01 一 数组的基本概念 只能存放一种类型的数据 xff0c 比如int类型的数组 float类型的数组 里面存放的数据称为 元素 二数组的定义 1 定义 声明数