学习并了解了 一维数组 二维数组 静态变量 外部变量等
int b[5]; //未初始化的全局变量是0
int main()
{
int i;
//int array[5]; //未初始化的局部变量是垃圾值
//int array[5] = {1, 2, 3, 4, 5};
//int array[5] = {1, 2}; //对部分元素初始化,其他未初始化元素为0
int array[] = {1, 2, 3, 4 ,5};
printf("%p\n", &array[0]); //数组首元素地址,单位是4字节
printf("%p\n", array); //array是数组名,同时也是数组首元素地址,单位是4字节
printf("%p\n", &array); //数组的地址,单位是一个数组,20字节
printf("%p\n", &a[0][0]); //首元素的地址,单位4字节
printf("%p\n", a[0]); //首行首元素地址,单位4字节
printf("%p\n", &a[0]); //首行的地址,单位12字节
printf("%p\n", a); //首行的地址,单位12字节
printf("%p\n", &a); //数组的地址,单位48字节
数组的基本定义方式 有以下几种
//int a[4][3];
//int a[4][3] = {1, 2, 3, 4, 5 ,6, 7, 8, 9, 10, 11, 12};
//int a[4][3] = {{1, 2, 3}, {2, 3, 4}, {3, 4, 5}, {7, 9, 8}};
//int a[4][3] = {1, 2};
//int a[4][3] = {{1}, {2, 3}, {3, 4}, {5}};
//int a[][3] = {1, 2, 3, 4, 5 ,6, 7, 8, 9, 10, 11, 12};
int a[4][3] = {0};
然后了解了 函数的编写 和执行方式
#include <stdio.h>
void print(); //函数声明
int add(int x, int y) //有返回值 有形参 1、形参个数和实参对应 2、类型对应 3、名字可以不一致
{ //二、给形参分配空间 三、传值(把实参传给形参)(值传递、地址传递)
int result; //四、执行函数体
result = x + y;
return result; //return 返回结果,函数里面一旦遇到return,函数调用立马结束
//exit(1); //任何函数里面,遇到exit(), 程序终止。
} //五、返回 六、释放空间(释放的是栈空间)
int main()
{
int a = 1, b = 2, result;
print();
result = add(a, b); //实参(实际参数) 一、通过函数名找到函数的入口地址(函数名就是地址)
printf("result = %d\n", result);
printf("%p\n", add); //函数名就是地址
return 0;
}
void print() //没有返回值 没有形参
{
printf("helloworld\n");
}
/*
char str[20] = "hello";
char ptr[20] = "world";
strcat(str, ptr); //将字符串ptr连接到str后面
printf("%s\n", str);*/
/* char str[20] = "helloworld";
char ptr[20] = "world";
//strcpy(str, ptr); //字符串拷贝函数 把ptr指向的字符串拷贝到str里 包含'\0'
此时输出是world 后面都是\0\0\0\0
STATIC
修饰全局变量
改变变量的试用域 只能在当前文件被调用
extern 声明一个外部变量 声明不用分配空间 定义需要分配空间