当前位置: 首页 > news >正文

沈阳网站企业咸阳机场建设招聘信息网站

沈阳网站企业,咸阳机场建设招聘信息网站,龙岩优化怎么做搜索,重庆唐卡装饰公司目录 导读1. 字符数组1.1 字符数组的创建1.2 字符数组的初始化1.3 不同初始化在内存中的不同1.3.1 strlen测试1.3.2 sizeof测试1.3.3 差异原因 1.4 字符数组的使用 2. 数组越界3. 数组作为函数参数博主有话说 导读 我们在前面讲到了 int 类型的数组的创建和使用#xff1a; 一… 目录 导读1. 字符数组1.1 字符数组的创建1.2 字符数组的初始化1.3 不同初始化在内存中的不同1.3.1 strlen测试1.3.2 sizeof测试1.3.3 差异原因 1.4 字符数组的使用 2. 数组越界3. 数组作为函数参数博主有话说 导读 我们在前面讲到了 int 类型的数组的创建和使用 一维数组和二维数组的使用int类型 今天我们来了解字符数组的创建和使用还会提到关于数组越界的问题和数组作为函数参数的用法。 这里还有个基于数组而制作的小游戏——三子棋感兴趣的小伙伴可以进去看一下。 1. 字符数组 我们在剖析数据在内存中的存储中介绍到 字符型数据是以字符的ASCII代码存储在存储单元中的一般占一个字节。由于ASCII代码也属于整数形式因此在C99标准中把字符类型归纳为整型类型中。 C语言中没有字符串类型也没有字符串变量字符串是存放在字符型数组中的。 1.1 字符数组的创建 用来存放字符数据的数组是字符数组 一维数组 char arr[10];//一维数组// 定义了一个大小为10的字符数组二维数组 char arr[3][5];//创建一个3行5列的二维字符数组1.2 字符数组的初始化 数组在创建的时候如果想不指定数组的确定的大小就得初始化。数组的元素个数根据初始化的内容来确定。 char arr1[3] {a,98, c}; char arr2[] {a,b,c}; char arr3[] abc; char arr[3][10] {hello, world, c};1.3 不同初始化在内存中的不同 但是对于下面的代码要区分内存中如何分配。 char arr2[] {a,b,c}; char arr3[] abc;1.3.1 strlen测试 我们可以用strlen函数来进行测试strlen函数是用来计算字符串的长度的计算的是实际长度不包括 ’ \0 ’ 在内 int main() {char arr2[] { a,b,c };char arr3[] abc;int len1 strlen(arr2);int len2 strlen(arr3);printf(arr2字符串长度%d\narr3字符串长度%d\n, len1, len2);return 0; }可以看到第一个和第二个字符串长度的差异这就是两者的区别 1.3.2 sizeof测试 int main() {char arr2[] { a,b,c };char arr3[] abc;int sz1 sizeof(arr2);int sz2 sizeof(arr3);printf(arr2字符串大小%d\narr3字符串大小%d\n, sz1, sz2);return 0; }1.3.3 差异原因 arr2[] 和 arr3[] 存储的东西是相同的也就是一组字符的集合但是它们在内存中存储的方式不同这也就导致了它们在使用上的一些细微差别。 对于arr2[]来说它是一个字符数组也就是一组字符的集合每个字符都占用一个字节的空间。在内存中它是连续存储的因此每个字符都有自己的地址。对于arr3[]来说它是一个以null结尾的字符串也就是一组字符的集合每个字符仍然占用一个字节的空间。但是在内存中它不同于arr2[]它会在字符串的结尾处添加一个null‘\0’字符来表示字符串的结束。因此在内存中它需要额外的一个字节来存储null字符也就是说字符串abc在内存中占用4个字节的空间。 1.4 字符数组的使用 一维字符数组 int main() {char name[] { J, o, h, n, \0 }; // 注意要以 \0 结束int length sizeof(name) / sizeof(name[0]); // 计算数组长度for (int i 0; i length; i) {printf(%c , name[i]);}return 0; }二维字符数组 int main() {// 定义二维字符数组char arr[3][10] { hello, world, c };// 输出二维字符数组for (int i 0; i 3; i) {printf(%s\n, arr[i]);}return 0; }2. 数组越界 数组的下标是有范围限制的。 数组的下规定是从0开始的如果数组有n个元素最后一个元素的下标就是n-1。 所以数组的下标如果小于0或者大于n-1就是数组越界访问了超出了数组合法空间的访问。 C语言本身是不做数组下标的越界检查编译器也不一定报错但是编译器不报错并不意味着程序就是正确的 所以程序员写代码时最好自己做越界的检查。 int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int i 0;for (i 0; i 10; i){printf(%d , arr[i]);//当i等于10的时候越界访问了}return 0; }这种问题会导致程序出现运行时错误通常会导致程序崩溃、异常或错误的输出。 3. 数组作为函数参数 往往我们在写代码的时候会将数组作为参数传个函数 比如我要实现一个冒泡排序函数 判断下面代码是否能够实现排序 void bubble_sort(int arr[]) {int sz sizeof(arr) / sizeof(arr[0]);int i 0;for (i 0; i sz - 1; i){int j 0;for (j 0; j sz - i - 1; j){if (arr[j] arr[j 1]){int tmp arr[j];arr[j] arr[j 1];arr[j 1] tmp;}}} } int main() {int arr[] { 3,1,7,5,8,9,0,2,4,6 };bubble_sort(arr);//是否可以正常排序int i 0;for (i 0; i sizeof(arr) / sizeof(arr[0]); i){printf(%d , arr[i]);}return 0; }结构并没有帮助我们实现排序我们来进入调试查看 查看两个值 接下来进入排序函数 调试之后可以看到bubble_sort 函数内部的sz 是1原因就在于我们传递过去的是数组的首元素地址bubble_sort 函数内部的sz计算的也仅仅是首元素的大小所以正确代码应该为 void bubble_sort(int arr[], int sz)//参数接收数组元素个数 {int i 0;for (i 0; i sz - 1; i){int j 0;for (j 0; j sz - i - 1; j){if (arr[j] arr[j 1]){int tmp arr[j];arr[j] arr[j 1];arr[j 1] tmp;}}} } int main() {int arr[] { 3,1,7,5,8,9,0,2,4,6 };int sz sizeof(arr) / sizeof(arr[0]);bubble_sort(arr, sz);int i 0;for (i 0; i sz; i){printf(%d , arr[i]);}return 0; }博主有话说 关于更多的数组对于sizeof和strlen函数传参的问题可以看——不同的数组传参在sizeof和strlen中的不同 今天就到这里关注博主查看更多内容
http://www.hkea.cn/news/14453491/

相关文章:

  • 保靖网站建设同城信息发布平台
  • 网站换程序 搜索引擎wordpress主题代码框架
  • 安徽省网站肥建设网站动力无限西安网站建设
  • 做电商网站的wordpress js链接地址
  • 个人网站网页设计wordpress怎样在列表页使用瀑布流
  • 沈阳市建网站wordpress修改代码后
  • 网站域名过期了怎么办成功备案的网站增加域名
  • 百度商桥怎么绑定网站微商城开发公司有哪些比较好
  • 网站策划 ppt长沙seo服务
  • 东莞专业网站推广方式vi设计公司排行
  • 网站备案收费幕布网站优化要怎么做
  • 景观做文本常用的网站网页制作公司设计理念
  • 没有做老千的斗牛网站6邯郸百度爱采购
  • 包头住房和城乡建设厅网站如何开设网站
  • 文化馆网站建设解决方案百度收录最好的网站
  • 做网站的公司重庆wordpress极简名片主题
  • 萧山城市建设网站王展简历
  • 企业外贸网站python 做 网站
  • 深圳网站制作排行榜怎样新建一个网页
  • 网站更换主机注意网站功能有哪些
  • 网站建设公司品牌过年做那个网站致富
  • 网站后台密码是什么合肥品牌设计
  • 快注销网站淘宝联盟的网站怎么自己做
  • 公司网站建设和推广有哪些搜索引擎网站
  • 文明网i中国精神文明建设门户网站电子商务网站主要功能
  • 私人网站如何做竞价网站后台统计
  • 郑州做网站开发销售青岛的互联网企业
  • 官网网站模板网站建设接口开发
  • wordpress的网站怎么让他上线湖北短视频搜索seo
  • 如何找人帮我做网站推广网络设计与实施