c语言程序设计知识点总结(2)

一、递归调用函数
两个条件
1)递归规律
2)递归出口

二、全局变量、局部变量
局部变量:定义在函数内(包括形参)或者语句块内,作用域为函数结束或者语句块

全局变量:
定义在函数外,作用域为从定义位置开始到程序结束

三、指针
1、对变量的访问
两种方式
直接访问:通过变量名访问
间接访问:通过变量地址访问

指针变量
语法 类型 * 指针变量名
类型说明:任意合法的类型,指针变量的基类型,指针变量可以指向的变量类型。

2、引用
int a;
int *p=&a ;===*p等价于a
a=6;
*p=6;

3、指针变量作为函数参数
相当于传地址调用

注意:在使用指针变量p间接访问变量时,需要给该指针变量分配内存空间,必须被赋值。

4、引用数组

int a[10];
int *p=a;
等价关系:
1)p+i=== a+i =&a[i]=&p[i]

2)(p+i)===(a+i)==a[i]===p[i]

注意:
1)指针变量必须指向连续的内存空间,同时指针的移动不能超过数组的最后一个元素。
2)&后面只能跟变量名,*后面只能跟地址

5、遍历数组
方法1:下标

方法2:指针
int a[10];
int *p=a;

int i;

for(i=0;i<10;i++) //for(i=0;p<a+10;i++) //for(i=0;p<p+10;i++)
{scanf(“%d”,&p[i]);//scanf(“%d”,p+i);
printf(“%d”,p[i]);//printf(“%d”,*(p+i));
}

结合性:& * ++ --优先级相同,自右至左的结合性

通过指针引用字符串
1、字符数组
char ch[]=“hello”;
scanf("%s",ch);
printf("%s",ch);
2、字符指针变量
char *str=“hello”;//char * str; str=“hello”;
puts(str);//printf("%s",str);

四、结构体
1、类型定义:
语法:struct 结构体名{
类型 成员名//成员表列
} ;
结构体类型名首字母通常大写

2、定义结构体类型变量
1)先定义类型,在定义变量
struct Stu{
char name[20];
int num;
int age;
double score;
};
2)定义类型的同时,并定义变量
struct Stu{
char name[20];
int num;
int age;
double score;
}stu1,stu2;
3)直接定义变量(省略结构体类型名)
struct {
char name[20];
int num;
int age;
double score;
}stu1,stu2;

3、初始化以及引用
初始化:在定义的同时直接赋值
引用:结构体变量名.成员名
不可以整体引用结构体变量。

4、结构体数组
同普通的结构体类型变量的定义用法相似,此处不再赘述

5、结构体指针
1)指向结构体变量的指针
struct Stu2{
char name[20],
int num,
int age,
double score
};
struct Stu2 st1,st2;
struct Stu2 *p=& st1;
调用成员:
st1.num;
p->num;
(*p).num;

2)指向结构体数组的指针
struct Stu2{
char name[20],
int num,
int age,
double score
};
struct Stu2 st[30];
struct Stu2 *p=st;
调用成员:
st[i].num;
(p+i)->num;
( * (p+i) ).num;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值