数组指针本质是指针,指针数组本质是数组,指针数组存放的是指针,用于主函数的外部传参, argc记录的是传参个数,char *argv[]是一个指针数组,主函数从命令行接收的外部传参,./a.out后面跟的数据
atoi是把字符串数字转化成数字,二级指针是指向指针的指针,因此记录的是指针的地址。
函数根据有无返回值,有无参数可分类,也可以根据是否是系统库提供分为库函数和自定义函数,根据调用状态分为主调函数和被调函数
全局变量和局部变量
全局变量:没有定义在任何函数内的变量(没有被包在任何{}里面的变量)
全部变量:定义在函数中的变量
全局变量和局部变量,生命周期和作用域是不同的
生命周期:分配的空间何时被回收,变量的开始到消亡
作用域:可以访问的范围
六种存储类型
auto:局部变量默认是auto,全局变量不能使用auto修饰
static:修饰局部变量时,延长局部变量的生命周期 修饰全局变量时,限制全局变量只能在当前文件中被访问 static修饰的变量只会被初始化一次
extern: 引入外部文件种的变量
register:将变量储存在寄存器中,不能被读取地址
const:一般不对const修饰的变量取地址
volatile
值传递和地址传递
值传递:单纯把实参的值传递给形参的过程,函数内部无法修改实参的值
地址传递:是用实参地址初始化形参,可以改变实参的值
一维整形函数作为函数传参
通过传递数组首地址和长度,来计算长度等
自己写1到100相加的函数和输入n,从1加到n的函数
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int my_ad();
int my_add(int a);
int main(int argc, const char *argv[])
{
//printf("%d\n",my_ad());
int m;
scanf("%d",&m);
printf("%d\n",my_add(m));
return 0;
return 0;
}
int my_ad()
{
int i,sum=0;
for(i=1;i<=100;i++)
{
sum+=i;
}
return sum;
}
int my_add(int a)
{
int sum=0,i;
for(i=1;i<=a;i++)
{
sum+=i;
}
return sum;
}
作业:
1-2、4-6:有道云笔记
3思维导图:有道云笔记