C语言入门基础知识三

一、数组

数组:存储相同数据元素类型的集合

特点:类型相同 内存连续

1、一维整形数组

存储类型 数据类型 数组名[元素个数]

数组的遍历方式:一般使用循环来完成

一维数组的数组名能够代表连续空间的首地址,通过sizeof运算符可以测出所占连续空间的总字节数

对此,我们了解一下冒泡排序,什么是冒泡?

思想:假设有一个一维数字组有N个数字,从左到右,两两依次进行比较,如果是升序,则左边大于右边,则要交换,否则交换,用大的数字接着与下一个数字进行比较得出是否要交换位置,重复步骤,直到该趟结束,选出最大的数字放置最右边,在从待排序的N-1的数字开始重复,知道剩一个数字结束。

for(i=0;i<N;i++)

{

for(j=0;j<N-1;j++)

{

if(arr[j]<arr[j+1])

{

temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}}}

2、字符数组

‘\0'是一个字符串中的结束标志。

赋值形式:

char str[20]={'h','e','l','l','o'};

char str[20]={"hello"};

char str[20]="hello";

只有双引号默认有'\0'存在

gets:获得字符串,遇到'\n'才表示输入完成

puts:输出一个字符串,遇到'\0'停止打印

strlen:计算一个字符串的有效长度,不包含\0

strcpy:实现两个字符串之间的拷贝 参数1 目的字符串的首地址 数组名 参数2:源字符串的首地址

strncpy:拷贝指定的字符的个数到目标字符串中

strcat:实现字符串的连接

strncat:实现字符串中前N个字符的连接

strcmp:实现两个字符串的比较 返回值大于0 str1>str2 返回值小于0 str1<str2  等于0代表相等

strncmp:实现两个字符串指定个数的比较

3、二维数组

int arr[2][3]={0}

二位数组在存储时按照行序优先 进行存储

本质:可以看成是一个数组元素是一维数组的一维数组

定义格式:

 int arr[2][3]   intarr[][2]={1,2,3,4,5} 正确

二、指针

地址:内存单元的编号  地址会存在一种只想关系 因此也为称为指针

指针是地址常量

指针变量:专门存储地址的变量

&:取址运算符 *:取值运算符

在32位操作系统下,指针永远占4个字节空间 64位 8个字节空间

二级指针:int**p=&a 用来存储一级指针的地址

空指针:空指针指向的空间即零号地址是不允许被操作(访问或者修改),一旦操,就会引起段错区。

野指针:针的指向是不明确的,有可能指向的空间还可以查看,但是也会存在指针此时指向的空间不可以查看,一旦查看就会段错误,其实不管此时该野指针的指向空间是否可以查看,都是没有意义的,因此一般避免野指针的出现,定义指针的时候将其初始化为空指针即可

段错误:1、数组越界 2、访问了不该访问的空间(空指针和野指针)3、修改了常量区的内容

p++等价于p=p+1 意味着可以改变指针的指向到下一个地址去

p+1:只是将指针的位置加了1,但指向还是原来的指向

1、数组指针

    存储类型   数据类型 (*指针变量名)[元素个数]  ;元素个数:代表指针所指向的一维数组中含有的元素个数

int arr[5]           int(*p)[5]=&arr

指针指向什么类型,加1移动多大的空间

2、指针数组

存储类型  数据类型 *  数组名[元素个数];

char str[20]----》在栈区一次性开辟20个字节的空间出来,将常量区的内容拷贝了一份完整的字符串内容到申请的20字节栈区的空间,在栈区完全存储每一个“hello”中的字符,以后和常量区没有关系,意味着可以肆无忌惮的更改内容。

char *str  -----》在栈区一次性开辟了4个或者8个字节空间(依赖于操作系统的位数)

 只存储了来自于常量区“hello”中的首字母’h’的地址,会和常量区形成指向的关系,意味着不能取更改所指向空间的空间,但是指针是灵活的,虽然此时指向的空间内容不可以改变,指向可以随便变化。

三、函数

1、函数的定义:

存储类型  返回值类型  函数名 (数据类型1  形参名1,数据类型2  形参名2........)

2、函数的传参

1、值传递

2、址传递:想通过子函数来引起实参自己发生改变的时候,就需要传递实参的地址

3、实参和形参的作用域不同,可以同名

4、数组作为参数传参会退化为指针

5、main函数传参  int argc  代表参数的个数    const char*argv[] 传入参数的指针数组

3、枚举类型

使用枚举作为错误码使用居多

定义 enum 枚举名{ 1,2,3..};

4、递归函数

本次调用函数之后的结果需要再次调用函数自己,才能得到最终的结果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值