C语言复习(数据类型——指针)

C语言的数据类型

C语言中的基本输入和输出

  1. putchar和getchar函数只会输入输出一个字符。

  1. 使用gets函数时,在gets中传入一个字符指针,也就是存放这个字符串的字符数组地址即可接收。

可将想要输出的字符串或者字符数组的地址传入puts即可打印输出。

C语言运算符和表达式

  1. sizeof是C语言的32个关键字之一,并非“函数”。

  1. 其运算对象可以是任何数据类型变量

  1. 逻辑运算符和其它运算符优先级从低到高依次为:

赋值运算符(=)<&&和||< 关系运算符 < 算术运算符 < 非(!)

C语言递归

必须满足的条件:

存在限制条件,当达到这个限制条件时,递归停止。

每次递归结束之后越来越接近这个限制条件。

C语句和程序流

if选择结构

三种形式

  1. 单选择

if(表达式)

{

}

  1. 双选择

if(表达式)

{}

else

{}

  1. 多选择

if(表达式)

{}

else if(表达式)

{}

else if (表达式)

{}

else{}

C语言switch case语句

先计算switch后的表达式,在使其与case后的表达式比较,若相等,则从这个表达式后面的语句开始执行,若没有一个与switch后的表达式相等,则执行default后的语句

switch(表达式) /*首先计算表达式的值*/ 
{ 
    case 常量表达式1:语句1; 
    case 常量表达式2:语句2; 
    case 常量表达式3:语句3; 
    // …… 
    case 常量表达式n:语句n; 
    default:语句n+1;
}

C语言break语句

break,顾名思义,跳出的意思,仅用于跳出switch结构循环结构,用于提前结束switch结构或循环。(用于循环和switch语句中)

C语言continue语句

continue,顾名思义,是继续的意思,它仅用于循环中,用于提前结束本次循环,即跨过continue后面的循环语句,提前进入下次循环。(仅仅用于循环中)

C语言三种循环结构

whlie循环

while语句创建一个循环,该循环在判断表达式为假(或0)之前重复执行。while语句是一个入口条件(entry-condition)循环,在进行一次循环之前决定是否要执行循环。因此有可能一次也不执行。循环的语句部分可以是一个简单语句或一个复合语句

while(表达式) 
{ 
    循环体语句 
}

do while循环

do while语句创建一个循环,它在判断表达式为假(或0)之前重复执行。do while语句是一个退出条件循环,在执行一次循环之后才决定是否要再次执行循环,因此循环至少要被执行一次。循环的语句部分可以是一个简单语句或一个复合语句

do 
{ 
    循环体语句 
}while(表达式);

for循环

for语句使用由分号隔开的三个控制表达式来控制循环过程。for语句是一个入口条件循环,在进行一次循环之前决定是否要执行循环,因此有可能循环一次也不执行。循环的语句部分可以是一个简单语句或一个复合语句

for(初始化表达式;判断表达式;更新表达式)
{
    循环体语句 
}
循环的嵌套:

外部循环执行一次,内部循环执行一轮。

C语言函数

函数的定义

返回值类型 函数名(形参表说明) /*函数首部*/
{
    说明语句 /*函数体*/
    执行语句
}

函数的调用

(1)函数表达式:函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数是有返回值的。

(2)函数语句:函数调用的一般形式加上分号即构成函数语句。

例如:

printf("%d",a);
scanf("%d",&b);

(3)函数实参:函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。

例如:

printf("%d",max(x,y));/*把max调用的返回值作为printf函数的实参*/

函数的声明

类型说明符 被调函数名(类型 形参,类型 形参...);

在程序中,函数的定义只能有一次,而函数的声明可以有多次。

C语言变量的存储类型

在计算机中保留变量当前值的存储单元有两大类,内存和cpu的寄存器

生存期(时间角度)

变量的保留时间又叫做变量的生存期

可将变量分为静态存储动态存储两种情况:

(1)静态存储是指变量存储在内存的静态存储区,在编译时就分配了存储空间,在整个程序的运行期间,该变量占有固定的存储单元,程序结束后,这部分空间才释放,变量的值在整个程序中始终存在。

(2)动态存储是指变量存储在内存的动态存储区,在程序的运行过程中,只有当变量所在的函数被调用时,编译系统才临时为该变量分配一段内存单元,函数调用结束,该变量空间释放,变量的值只在函数调用期存在。

作用域(空间角度)

从空间角度,可以将变量分为全局变量局部变量

(1)局部变量是在一个函数或复合语句内定义的变量,它仅在函数或复合语句内有效,编译时,编译系统不为局部变量分配内存单元,而是在程序运行过程中,当局部变量所在的函数被调用时,编译系统根据需要,临时分配内存,调用结束,空间释放。

(2)全局变量是在函数之外定义的变量,其作用范围为从定义处开始到本文件结束,编译时,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定单元。

四种类型的变量

  1. auto自动变量

动态存储,全局或局部变量

函数中的局部变量,如不专门声明为static存储类别,都是动态地分配存储空间的,数据存储在动态存储区中。

自动变量用关键字auto进行存储类别的声明,

  1. extern外部变量

静态存储,全局变量

引用之前用关键字extern对该变量进行“外部变量声明”

  1. static静态变量

静态存储,全局或局部变量(看自己定义)

  1. C语言寄存器变量

为提高效率,C语言允许将局部变量的值存放在CPU的寄存器中,这种变量叫做寄存器变量,用关键字register声明。使用寄存器变量需要注意以下几点:

(1)只有局部自动变量和形式参数可以作为寄存器变量。

(2)一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量。

(3)不能使用取地址运算符“&”求寄存器变量的地址。

C语言数组

一维数组

int a[];
数据类型 数组名 [常量表达式];

当给部分元素负值时

数据类型为整型,未赋值的记为0;

数据类型为浮点型时,未赋值的记为小数类型;字符类型则为'\n'

二维数组

定义及初始化

int a[3][4]={{1,2,3,4},{10,20,30,40},{100,200,300,400}}; //定义一个三行四列的二维数组,按行赋值
int a[3][4]={1,2,3,4,10,20,30,40,100,200,300,400}; //定义一个三行四列的二维数组并对其中的12(3*4)个元素进行赋值

字符数组

定义及初始化

char c[6]={'c', ' h ', 'i', 'n', 'a' , '\0' };
char a[]={"china"};
其中,‘\0’为字符串结束符。如果不对c[5]赋任何值,‘\0’会由系统自动添加。

C语言指针

C语言的定义

  1. 这里的*与前面的类型说明符共同说明这是一个指针变量,类型说明符表示该指针变量所指向的变量为何种数据类型,变量名即为定义的指针变量名。除此之外,C还提供*运算符获取地址上对应的值

C语言与数组的联系

C语言规定,数组名代表数组的首地址,也就是第0号元素的地址。因此

p=a; /*等价于p=&a[0];*/
int *p=a; /*等价于int *p=&a[0];*/

1.对于指向首地址的指针p,p+i(或a+i)就是数组元素a[i]的地址,*(p+i)( 或*(a+i) )就是a[i]的值。

如果指针变量p已指向数组中的某一个元素,则p+1指向同一数组中的下一个元素。

2.引入指针变量后,就可以用以下两种方法来访问数组元素

(1)下标法,即用a[i]形式访问数组元素,在前面介绍数组时都是采用这种方法。

(2)指针法,即采用*(a+i)或*(p+i)形式,用间接访问的方法来访问数组元素,其中a是数组名,p是指向数组的指针变量,其初值p=a。

C语言字符串与指针的用法

1,字符指针也可以指向一个字符串,可以用字符串常量对字符指针进行初始化,例如:

char *str = "I love you" ;

此时,字符指针指向一个字符串常量的首地址

2.还可以用字符数组来存放字符串,例如:

char string[ ] = "I love you";

两者区别:字符指针str是个变量,可以改变str使它指向不同的字符串,但不能改变str所指向的字符串常量的值。而string是一个数组,可以改变数组中保存的内容。应注意字符串指针和字符串数组的区别。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值