c语言学习笔记

  1. 函数调试时,
    下一步(进入下一行)与单步进入(进入函数内部)的区别

  2. 函数定义放在主函数的位置
    函数定义放在主函数前,因为编译器是逐上而下进行编译,它需要知道参数类型,个数,以及返回类型。来进行检查

函数定义放在主函数后,但前面需要有函数声明来告诉编译器去哪找函数体(参数类型,个数,以及返回类型)

字符串函数

  • 字符串长度
//strlen(字符串)返回字符串的字数
#include <stdio.h>
#include <string.h>
int main()
{
	char str[] = "hello world";
	
	printf("%d\n", strlen(str));//输出 11(10个字符+一个空格)
        printf("%d\n", sizeof(str));//输出 12 (返回占据的空间)
	return 0;
 } 

  • 字符串比较
#include <stdio.h>
#include <string.h>
int main()
{
	char str[5] = "abc";
	char str1[5] = "abc";
	char str2[5] = "bbc";
	char str3[5] = "zbc";

	printf("%d\n", strcmp(str, str1));//输出 0(代表两个字符串相等) 
	printf("%d\n", strcmp(str, str2));//输出 -1(代表两字符不相等,且后一字符串比前面的大) 
	printf("%d\n", strcmp(str3, str));//输出 1 
	return 0;
 } 

strcmp(s1,s2),前一字符串与后面的比较,结果有0,1,-1!


  • 字符串复制
#include <stdio.h>
#include <string.h>
int main()
{
	char str[20] = "abc";
	char str1[20] = "Hello World!";

	printf("%s\n", strcpy(str, str1));//输出 Hello World!(后一字符串复制到前一字符串中 

	return 0;
 } 
  • 字符串链接
#include <stdio.h>
#include <string.h>
int main()
{
	char str[20] = "Hello ";
	char str1[20] = "World!";

	printf("%s\n", strcat(str, str1));//输出 Hello World!(后一字符串复制并接到到前一字符串后 

	return 0;
 } 

c语言传值不匹配问题

  1. 函数传值自动转换

  2. 格式符传值自动转换

#include <stdio.h>

void pri(int i);

int main()
{
	
	pri(2.4);
	int x = 2;
	printf("%d,%d\n",sizeof(int), sizeof(float));//都是四个字节 
	printf("%f\n",x);//输出 0,格式符传值自动转换,原因在于截断 
	
	return 0;
 } 
 void pri(int i)
 {
 	printf("%f\n",i);
 	printf("%d\n",i);//函数传值自动转换2.4-->2 
 }

为此又学习啦:不同字符类型赋值时自动转换的扩充与截断数字在电脑中的存储形式:二进制补码
扩充:位少-->位多

  • 当数无符号:在多出来的二进制位填充0
  • 当数有符号:在多出来的二进制位填充1,原因是负数的二进制补码
    截断:位多-->位少
    将对应的多余的高位舍去,将对应位的二进制数填充上

二进制补码:数字在电脑中都是以二进制补码的形式存放

  • 正数:十进制<===>二进制
  • 负数:十进制<===>二进制,
    十进制--->二进制
    1、获得对应整数的二进制形式 2、二进制形式加一 3、按位取反即得负数的二进制补码
    反过来二进制-->十进制
    1、按位取反 2、二进制形式减一 3、得正数的二进制形式,最后添负号
    Dev C++中的整型与浮点型的字符转换
    | 属性|字节数|示例|二进制形式(32bit)|
    | :-- |:--: |:-- |:-- |
    | 整型 |4 |2 |00000000 00000000 00000000 000000010|
    | 浮点型|4 |2.0 |0(符号) 00000000(指数)00000000000000000000010|
    所以当int x=2;float y = x;进行之后
    y的二进制为0 00000000 0000000000000000000000,所以输出y自然为0

名词解释

本地变量:函数内部的变量就是本地变量,分为main函数和自定义函数。
生存周期:只在自身的{}之内生存。
作用域:只在自身的{}之内起作用。

posted @   行至为成  阅读(261)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示