c语言学习日记1(AI助学)

  • scanf() 遇到格式化字符串中的 %s 时,它会开始读取输入字符串中的字符,直到遇到空格、制表符、换行符等空白字符或者遇到字符串结束符 \0。这意味着,如果用户输入了一个带有空格的字符串,scanf() 函数只会读取空格之前的部分作为字符串,而忽略空格之后的内容。fgets()可以确保读取整个输入行,而不仅仅是第一个空格之前的部分。
  • q = p;只是简单地将指针 p 的值赋给指针 q,使它们指向相同的内存地址。这样,qp 将指向同一个节点,它们在内存中是共享的。这意味着对于 qp 的修改都会影响到另一个指针所指向的节点。如果你在操作 q 时修改了节点的内容,那么 p 也会反映这些修改。而 *q = *p;则是将 p 指向的节点的值复制给 q 指向的节点。这样,qp 指向的是两个不同的节点,它们在内存中是独立的。对于 qp 的任何修改都不会影响到另一个指针所指向的节点。
  • 由于输入缓冲区中仍然留有一个换行符 \n,因此 scanf 将会读取这个字符而不是用户输入的 YN。为了解决这个问题,你可以scanf 格式字符串中添加一个空格,例如 scanf(" %c", &ch)。在这种情况下,scanf 将会跳过任何输入缓冲区中留下的空白字符,包括之前输入的换行符。
  • 数组名本身就代表了该数组的地址。因此,在scanf函数中使用字符数组作为参数时,不需要使用取地址符&来获取该数组的地址。
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务