c补习阶段学习内容

Day5:

 

Day6:

%s:字符串

字符串的输出函数:

Printf(“ %s ”, str);

puts(数组名);

功能:将数组中的内容打印到终端,并且自动换行

注意:打印到‘\0结束

字符串的输入函数:

Scanf(“%s”,str);

gets(数组名);

功能:将输入的字符串保存在数组中,并且在末尾自动添加‘\0’

注意:gets不会进行越界检查,如果超出范围,就会操作未申请到的内存空间,段错误

出现段错误的原因:非法操作你没有申请的空间

Scanf和gets的区别:

Scanf写在gets之上时,会出现异常情况(gets吃掉了‘\n’)

  1. gets以回车作为结束符,但是scanf以空格,回车TAB作为变量输入结束的标志

2、

缓冲区:

Gets在输入结束后,会自动清空缓冲区的内容

Scanf在输入结束后,会在缓冲区中遗留空格、回车、tab

输入:

Gets:进行输入时,回先去检查缓冲区的内容,如果缓冲区有内容,会率先输出缓冲区当中的内容

Scanf:键入,不会检查缓冲区的内容

strlen和sizeof的区别:

  1. strlen求到的是字符串的实际长度,而sizeof求到的是申请到的内存空间的大小
  2. Strlen是一个函数,sizeof是一个运算符

Day7:

 

调用函数的注意事项:

注意:

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

函数声明的作用:

声明:将函数头部直接复制粘贴至main函数之前,然后加上分号

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

Day8:

指针是一种数据类型,是一种保存地址的数据类型

 

指向零号地址的指针(值为0的指针,就认为该指针没有指向)

注意:零号地址禁止操作

NULL;

野指针:不知道指向哪里的指针

局部变量,没有初始化,随机值

局部指针变量,如果没有初始化,就是野指针。

1.指针的数据类型:去掉变量名就是数据类型。

2.指针所指向的数据类型:去掉变量名和一个*号。

3.指针所能访问到内存空间的大小,是由指针所指向的数据类型决定。

指针的算数运算:

p+n:p向地址增大的方向移动了n个数据

     p实际的变化:p + sizeof(指针指向的数据类型)*n

P-n:  p向地址见效的方向移动了n个数据

     p实际的变化:p - sizeof(指针指向的数据类型)*n

P++:  p向地址增大的方向移动了一个数据 //改变指针的指向

      p = p+sizeof(指针指向的数据类型)

P--:p向地址减小的方向移动了一个数据 //改变指针的指向

      p = p-sizeof(指针指向的数据类型)

p-q:(p和q数据类型必须相同):这两个指针之间相隔的个数

实际的变化:(q-p)/sizeof(指针指向的数据类型)

//实现数组的输入

//参数1:数组的首地址 int *

//参数2:元素的个数  int

Void  input (int *m,int n)

Void  input (int  m[ ] ,  int n)

Void  input(int  m[100],   int n)

//当形参为数组时,都当做同级别的指针去用

Day9

一,指针和二维数组的关系:

a[i][j],   *(a[i]+j),   *(*(a+i)+j)

  1. &a、a、&a[0]、a[0]、&a[0][0]的值是一样的,但是表达的含义不一样

a:Int (*) [3] :他是一个指向一维数组的指针  a[0]:指向int类型元素的指针

  1. 为什么说a不是int**类型?

如果a是int**类型,那么他指向的数据类型应该是int * ,那么a+1,应该移动移动4字节,但是a+1,移动了12字节,移动了一个数组,因此a一定不是int**类型

a指向a[0]、a[0]指向a[0][0]

二,数组指针:

概念:指向数组的指针

1.数组指针和一维数组的关系

a[i],    *(a+i),   *((*p)+i),   (*p)[i]

2.数组指针和二维数组的关系

a[i][j]    p[i][j],  *(*(p+i)+j)   ,*(p[i]+j),  *(*(a+i)+j)   ,*(a[i]+j),

三,指针数组:

概念:元素为指针的数组

  1. 指针数组和一维数组的关系

a[i],  p[i]  *(*(p+i))    *(p[i])

  1. 指针数组和二维数组的关系

*(P[i]+j)  ,*(a[i]+j)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值