C语言从零开始(6)

上期作业的答案代码:

 

二维字符数组

定义一个长度为10的数组,每一个元素是char型

char str[10] = {‘h’,’e’,’l’,’l’,’o’};;

char str[10] = “hello”;

scanf(“%s”,str);

printf(“%s”,str);

定义一个长度为5的数组,该数组中的每一个元素又是一个长度为20的char的数组

char str[5][20] = {{‘x’,’I’,’a’,’n’},{‘h’,’u’,’a’,’q’,’i’,’n’,’g’},{‘b’,’a’,’o’,’j’,’i’},{‘l’,’a’,’s’,’a’},{‘y’,’y’,’d’,’s’}};

char str[5][20] = {“xian”,”huaqing”,”baoji”,”lasa”,”yyds”};

作业:

  1. 实现字符串的拷贝,不用库函数
  2. 实现字符串的连接,不用库函数
  3. 实现字符串的排序

函数

一个独立的功能模块

为什么要使用函数

(1)使程序变得模块化

(2)提高代码的复用率

函数的分类

(1)库函数

a、引入头文件  #include <stdio.h> 、#include <string.h>

b、调用函数

   printf();

注意:参数有多少个,数据类型使什么,返回值

函数名(实际参数)

(2)自定义函数(接口)

a、函数定义

存储类型  数据类型  函数名(形式参数列表)

{

函数体;

return返回值;

}

存储类型:auto、register、static、extern

数据类型:函数的返回值(函数的返回值不写默认为int)

函数名:见名知意

形式参数列表:要实现功能所需要的参数,需要调用传入

函数体:功能的具体实现

返回值:若没有返回值,该句话可以省略,并且返回值有且仅有一个

b、函数调用

函数名(实际参数列表);

注意:

  1. 需要将实参的值传递给形参,实参的个数和数据类型必须和形参一致
  2. 实参可以是变量、常量,也可以是表达式,必须是一个确定的数
  3. 实参和形参是两块独立的空间
  4. 传参数,实际上是将实参的值拷贝给形参
  5. 形参是局部变量,在函数调用时被定义,函数调用结束时被释放
  1. 调用时

  1. 调用结束

  1. 函数声明

如果不是在main函数之前定义,就需要在main函数之前声明

声明:就是将函数头直接拷贝再加上分号

没加声明之前:

加上声明之后:

编译器根据声明做语法检查

作用:帮助编译器做语法检查

指针

1、概念

指针是一种数据类型,是一种保存地址的数据类型 &+空间的名字

int:是一种数据类型,是一种保存整数的数据类型 8 9 10

float:是一种数据类型,是一种保存浮点数的数据类型 3.12 、2.35

char:是一种数据类型,是一种保存字符的数据类型  ‘A’ , ‘b’

什么是地址

内存分配的最小单位是字节,而每一个字节都有一个编号,我们把这个编号就叫做地址

2、地址的本质:内存单元的编号

3、指针:指针就是地址

4、指针的本质:内存单元的编号(内存单元的编号已经确定了)

5、指针变量

int a;//整型变量

float b;

指针变量:专门用来存放地址(内存单元的编号)的变量

6、定义:

存储类型 数据类型 * 指针变量名;

int * p;

存储类型:auto、register、static、extern

数据类型:指针指向的数据类型

指针的数据类型:int *

& *互为逆运算

思考?

  1. 地址是什么
  2. 指针是什么
  3. 指针变量是什么
  4. 指针变量怎么定义
  5. 如何给指针变量赋值
  6. 指针赋值以后可以干什么

练习:

(1).若有语句int *point, a=4;point=&a;下面均代表a的地址的一组选项是( )

A. a, point,*&a                 B. &*a, &a,*point

C. &point, *&point, &a          D. &a, &*point, point

(2).已有定义int k=2; int*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行赋值语句的是( )

A. k=*ptr1+*ptr2;             B.ptr2=k;

C.ptr1=ptr2;                      D. k=*ptr1*(*ptr2);

(3).若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是(   )
A) i=*p; B) *p=*&j; C) i=&j; D) i=**p;

设有以下程序:

(4).main(){ int a, b, k=4, m=6, *p1=&k, *p2=&m;

a=p1==&m;

b=(*p1)/(*p2)+7;printf("a=%d\n",a);printf("b=%d\n",b);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值