营销型网站建设的特色,零基础学习做网站,济南手机网站制作,苏州保利时光印象楼盘价格文章目录 引入正文内部函数与外部函数相关数组的知识点数组的初始化测试一维数组在内存中存储的地址#xff1a;遍历二维数组的值测试二维数组的地址(观察内存情况)数组下标为0开始的由来 两个数交换位置的三种方法 引入 写在前面#xff1a;关于C语言这部分内容#xff0c;… 文章目录 引入正文内部函数与外部函数相关数组的知识点数组的初始化测试一维数组在内存中存储的地址遍历二维数组的值测试二维数组的地址(观察内存情况)数组下标为0开始的由来 两个数交换位置的三种方法 引入 写在前面关于C语言这部分内容有人说过对自己的定位准确非常重要我是小白。我正处于C语言知识积累阶段并写不出成系统的知识供大家观看而各个知识点内容都载自或者加工于网络上面优秀的博主如果你觉好看那一定这些博主的功劳而我仅仅是根据自己的知识结构进行记录、和按照突然想到方式进行测试然后把涉及不会的知识查找着补充进来以便后面复习其中不免有很多错误之处如果你能指出了那最好不过如果观看请一定带着批判角度去看。 正文
内部函数与外部函数
总结 内部函数被static修饰的是内部函数内部函数只能被本文件中其他函数调用不能被其他文本的函数调用。 外部函数被extern修饰的是外部函数外部函数范围大不仅可以被本文的其他函数调用还可以被其他文本的函数调用 C语言中规定extren可以省略但是在调用此函数的其他文件中需要对此函数进行声明。 点击跳转原文优秀博主bleauchat链接 相关数组的知识点
数组的初始化
int arr1[10] {1,2,3};
int arr2[] {1,2,3,4};
int arr3[5] {1,2,3,4,5};//完全初始化
char arr4[] {a,98,c};
char arr5[] {a,b,c};
char arr6[] abcdef;数组在创建得时候如果想不指定数组得确定的大小就得初始化。数组得元素个数根据初始化得内容来确定。但是对于下面得代码要区分内存中如何分配 #include stdio.h
#include string.hint main(int argc, char **argv) {char arr1[] abc; // 定义一个字符型数组自动分配3个空间并赋值为abcchar arr2[3] {a,b,c}; // 定义一个字符型数组手动分配3个空间并赋值为a、b、cprintf(%d\n, sizeof(arr1)); // 输出arr1数组的大小为4包括末尾的\0printf(%d\n, sizeof(arr2)); // 输出arr2数组的大小为3printf(%d\n, strlen(arr1)); // 输出arr1字符串的长度为3不包括末尾的\0printf(%d\n, strlen(arr2)); // 输出arr2字符串的长度长度不定因为不一定有\0
}
对于printf(“%d\n”, strlen(arr2));也就是13行代码两个编译器都有不同的值。 dev C5.6.3 C(lang)在线工具点击蓝色跳转C(lang)在线工具 解释如下
arr1 ---- a b c \0 ---- 占4个字节sizeof
arr2 ---- a b c ---- 占3个字节(sizeof)
arr1 ---- a b c \0 ---- 占3个字节strlen
arr2 ---- a b c ---- 随机值(strlen)因为后面遇到\0是随机的不确定的1、strlen 和 sizeof 没有什么关联
2、strlen 是求字符串长度的 - 只能针对字符串求长度 - 库函数 - 使用得引用头文件
3、sizeof 计算变量、数组、类型得大小 - 单位是字节 -操作符
//注解:在没有引用头文件 #include string.h 双引号内的代码时strlen会报错而sizeof无需依赖其他头文件只要有输入输出函数 #include stdio.h 就可以输出。测试一维数组在内存中存储的地址
#include stdio.h
int main() {int arr[10] { 0 };int i 0;for (i 0; i sizeof(arr) / sizeof(arr[0]); i) {printf(arr[%d] %p\n, i, arr[i]);}return 0;
}注意%p表示用户希望计算机显示的值是以数组的地址的方式输出的。 测试结果
测试结论数组在内存中是连续存放的
遍历二维数组的值
#include stdio.h
int main(){//定义一个3行4列的二维数组并初始化前两行int arr[3][4] {{1,2},{4,5}};int i 0;//循环3次遍历每一行for(i0; i3; i){int j 0;//循环4次遍历该行的每一个元素并打印出该元素的值for(j0; j4; j){printf(%d , arr[i][j]);}}return 0;
}测试二维数组的地址(观察内存情况)
#include stdio.h
int main(){ int arr[3][4]; // 定义一个3行4列的整型数组int i 0; for(i0; i3; i) // 遍历每一行{int j 0; for (j 0; j 4; j) // 遍历每一列{ printf(arr[%d][%d] %p\n, i, j, arr[i][j]); // 输出当前元素的地址}} return 0;
} 结论二维数组也在内存中的存储情况是连续的。
数组下标为0开始的由来 两个数交换位置的三种方法
//1temp arr[j];arr[j] arr[j 1];arr[j 1] temp;//2arr[j] arr[j] * arr[j 1];arr[j 1] arr[j] / arr[j 1];arr[j] arr[j] / arr[j 1];//3arr[j] arr[j] arr[j 1];arr[j 1] arr[j] - arr[j 1];arr[j] arr[j] - arr[j 1];