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

杭州公司的网站建设公司浩森宇特北京网站建设

杭州公司的网站建设公司,浩森宇特北京网站建设,国外可以做推广的网站有哪些,福建省分行建设银行网站C语言 易错点 大总结 一、strlen(strs) 使用错误 ⭐️ 若strs 是一个指针数组(const char* strs[]),则不可用strlen(strs) 计算 strs 的长度,因为 strlen 是用于计算 字符串 的长度,而不是数组的长度。 解决方法 &…

C语言 易错点 大总结

在这里插入图片描述

一、strlen(strs) 使用错误 ⭐️

  • strs 是一个指针数组const char* strs[]),则不可用strlen(strs) 计算 strs 的长度,因为 strlen 是用于计算 字符串 的长度,而不是数组的长度。

  • 解决方法 🐯:使用 sizeof(strs) / sizeof(strs[0]) 来计算 数组 的长度。

#include <stdio.h>  // 包含标准输入输出库,用于使用 printf 函数
#include <string.h> // 包含字符串处理库,用于使用 strlen 函数int main() {// 定义一个常量字符指针数组,存储星期名称const char *strs[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};// 计算数组的长度(元素个数)// sizeof(strs) 返回整个数组的字节大小// sizeof(strs[0]) 返回数组中单个元素(即一个指针)的字节大小// sizeof(strs) / sizeof(strs[0]) 计算数组的元素个数int right_len = sizeof(strs) / sizeof(strs[0]); // 7// 错误的使用:strlen(strs)// strlen 用于计算字符串的长度(字符个数),但 strs 是一个指针数组,不是字符串// 这里的行为是未定义的,可能会返回一个错误的值int wrong_len = strlen(strs); // 5(未定义行为,结果不可靠)// 打印正确长度和错误长度printf("%d %d", right_len, wrong_len);return 0; // 程序正常结束
}
1、代码运行结果 ☁️
  • right_len 的值是 7,因为 strs 数组有 7 个元素。
  • wrong_len 的值是未定义的,因为 strlen(strs) 的行为是错误的。在某些环境下,它可能会返回 5,但这并不是可靠的结果。
2、关键点总结 📚
  1. sizeof(strs) / sizeof(strs[0]):🦋
    • 用于计算数组的元素个数。
    • 这是正确的方式。
  2. strlen(strs):🦋
    • 错误的使用方式,因为 strs 是一个指针数组,而不是字符串。
    • strlen 只能用于以 \0 结尾的字符串
  3. 未定义行为:
    • strlen(strs) 的结果是不可靠的,可能会导致程序崩溃或返回错误的值。
3、注意事项 💥

若需要计算字符串数组的长度,请使用 sizeof(strs) / sizeof(strs[0]),而不是 strlen。🌈

  • 若想求某个字符串的长度(例如 strs[0]),可以使用 strlen(strs[0])例如:👇🏻
int sunday_len = strlen(strs[0]); // 计算 "Sunday" 的长度,结果为 6

二、const char* strs[] ⭐️

const char* strs[] 是一个 常量字符指针数组 的定义。❀

1、const char*
  • const char* 表示一个指向常量字符的指针

  • const 表示指针指向的内容是常量,不能被修改。

  • 例如: 👇🏻

const char* str = "Hello";

这里,str 是一个指向字符串常量Hello” 的指针,不能通过 str 修改 “Hello” 的内容(例如 str[0] = 'h'; 是非法的)。

2. strs[]
  • strs[] 表示一个数组,数组的每个元素都是 const char* 类型。

  • 例如: 👇🏻

const char* strs[] = {"Hello", "World"};
  • 这里,strs 是一个数组,包含两个元素:

    • strs[0] 是指向字符串常量 "Hello" 的指针。

    • strs[1] 是指向字符串常量 "World" 的指针。

3. const char* strs[] 的含义
  • const char* strs[] 定义了一个数组,数组的每个元素都是一个指向常量字符串的指针。

  • 这种定义通常用于存储一组固定的字符串常量(例如星期名称月份名称等)。

  • 例如: 👇🏻

const char* strs[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

这里,strs 是一个包含 7 个元素的数组,每个元素都是一个指向星期名称的指针。

4. 为什么用 const
  • 使用 const 是为了确保字符串内容不会被意外修改。

  • 如果你尝试修改 strs 中的字符串内容,编译器会报错。

  • 例如: 👇🏻

strs[0][0] = 's'; // 错误:不能修改常量字符串
5. strs 的内存布局
  • strs 是一个指针数组,每个元素指向一个字符串常量。

  • 内存布局如下:

strs[0] -> "Sunday"
strs[1] -> "Monday"
strs[2] -> "Tuesday"
...
strs[6] -> "Saturday"
6、总结:
  • const char* strs[] 是一个常量字符指针数组,用于存储一组固定的字符串常量。

  • 使用 const 可以防止字符串内容被意外修改。

  • 这种定义非常适合用于存储固定的字符串集合(例如星期名称、月份名称等)。

三、字符串比较错误 ⭐️

  • strs 是一个指针数组const char* strs[]),则不可直接用if(strs[i] == s) 来比较字符串内容,因为if(strs[i] == s) 是比较指针地址,而不是字符串内容。即使两个字符串内容相同,它们的地址也可能不同。
  • 解决方法:使用 strcmp 函数来比较字符串内容

在这里插入图片描述

在这里插入图片描述

裁判测试程序样例:
#include <stdio.h>
#include <string.h>#define MAXS 80int getindex( char *s );int main()
{int n;char s[MAXS];scanf("%s", s);n = getindex(s);if ( n==-1 ) printf("wrong input!\n");else printf("%d\n", n);return 0;
}/* 你的代码将被嵌在这里 */
输入样例1:
Tuesday
输出样例1:
2
输入样例2:
today
输出样例2:
wrong input!
代码(C语言)⭐️

在这里插入图片描述

int getindex(char *s) {// 检查输入是否为空// 如果传入的指针 s 是 NULL,直接返回 -1 表示无效输入if (s == NULL) {return -1;}// 定义一个常量字符指针数组,存储星期名称// strs 是一个数组,每个元素是一个指向字符串常量的指针const char *strs[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};// 计算数组的长度(元素个数)// sizeof(strs) 返回整个数组的字节大小// sizeof(strs[0]) 返回数组中单个元素(即一个指针)的字节大小// sizeof(strs) / sizeof(strs[0]) 计算数组的元素个数int len = sizeof(strs) / sizeof(strs[0]); // 7// 遍历数组,查找匹配的字符串for (int i = 0; i < len; i++) {// 使用 strcmp 比较 strs[i] 和 s 的内容// strcmp 返回 0 表示两个字符串相等if (strcmp(strs[i], s) == 0) {return i; // 找到匹配,返回当前索引 i}}// 如果遍历完数组仍未找到匹配的字符串,返回 -1 表示未找到return -1; // 未找到匹配
}

C 库函数strcmp():比较字符串大小,请查看我的另一篇文章。

四、改进点总结:⭐️

  • 正确计算数组长度:使用 sizeof(strs) / sizeof(strs[0]) 计算数组长度

  • 正确比较字符串:使用 strcmp 比较字符串内容

  • 处理空指针:在函数开头检查 s 是否为 NULL

在这里插入图片描述


文章转载自:

http://icP1fHXW.nkpLs.cn
http://wRdxLvKF.nkpLs.cn
http://xp5UJzaC.nkpLs.cn
http://GqI7MAgx.nkpLs.cn
http://fxLhytT6.nkpLs.cn
http://o3P60NVx.nkpLs.cn
http://QWmmoXkX.nkpLs.cn
http://eBR5wxLR.nkpLs.cn
http://Nc4AbDVR.nkpLs.cn
http://qyfwMSXc.nkpLs.cn
http://Csh4Zaxb.nkpLs.cn
http://8kA2xWK4.nkpLs.cn
http://LdmYBeYP.nkpLs.cn
http://LQRY3yQp.nkpLs.cn
http://rLsv4u1e.nkpLs.cn
http://OL4nw4hW.nkpLs.cn
http://geefuctb.nkpLs.cn
http://ZMsZx3yw.nkpLs.cn
http://GiNwer2w.nkpLs.cn
http://iR9csOgm.nkpLs.cn
http://8aCYUmEr.nkpLs.cn
http://52ZlcWD1.nkpLs.cn
http://4R9SWAV5.nkpLs.cn
http://nmcBW5em.nkpLs.cn
http://CQZX0w34.nkpLs.cn
http://nQJNB1U9.nkpLs.cn
http://aRtAwj91.nkpLs.cn
http://khGPIoyK.nkpLs.cn
http://Ddv7gjDE.nkpLs.cn
http://AxkGfKwv.nkpLs.cn
http://www.dtcms.com/wzjs/723915.html

相关文章:

  • 如何做视频门户网站做网站的服务器多少钱
  • 传统文化网站建设方案国外优秀排版设计网站
  • 宜和购物电视购物官方网站可以做设计赚钱的网站
  • 锦江建设和交通局网站女教师网课入侵录屏冫
  • 做网站能用ai好还是ps网页搜索框代码
  • 沧州手机建站哪家好店铺网站域名怎么做
  • 口碑好门户网站开发开一家软件外包公司
  • 庆阳网站设计报价健身房网站建设案例
  • 万家灯火网站建设建设银行网站注册用户名不通过
  • 免费看今天开始做女神的网站wordpress恢复网站
  • 阜新网站seo家具网站开发设计任务书
  • 加强门户网站建设 信息公开工装
  • 企业官方网站建设方案上海网站案例
  • dw做的网站磁力搜索神器
  • 30天网站建设实录素材图片的制作方法
  • 天津开发区网站网络广告营销的典型案例
  • 免费域名申请网站大全推荐软件开发工程师职业满足兴趣因素
  • 十堰网站优化价格爱站网官网
  • 网站备案注意怎么推广微信公众号
  • 妇幼网站建设ppt做最好的win7系统下载网站
  • api网站制作光聚济南网站建设
  • 网站推广建设策略天元建设集团有限公司设计研究院赵纪峰联系方式
  • elementor做视频网站学大教育一对一收费价格表
  • 国外企业查询网站wordpress重定向传递权重
  • 在本地服务器上建设网站的步骤郑州做网站经开区
  • 重庆市公共资源交易中心网官网seo顾问公司
  • 建设网站公司中网站建设目的及功能
  • c2c电商平台网站网站定制页面调整至居中
  • 钓鱼网站代做安卓开发工具包
  • 企业做网站能赚钱么深圳网站seo优化排名公司