C语言入门part1—大致知识点梳理(上篇)

C语言入门part1—大致知识点梳理(上篇)

**关键字:**变量常量,全局变量局部变量,字符串+转义字符+注释,sizeof,求数据类型范围(举例char类型),原码反码补码,scanf等等杂七杂八

变量

  • 全局变量
  • 局部变量

#include<stdio.h>
int a = 10;//全局变量,作用于整个工程(即可运用于该工程下的其他.c文件,使用前需用extern+所要调用全局变量的类型+变量名调用),整个程序完全运行完时失效。定义后若未初始化(赋值)则值默认为0
int main()
{
 int a = 2;//局部变量,作用于当前{}内部,函数运行完则失效,需在使用前初始化,否则默认值为随机值
 printf("a=%d", a);
 return 0;
}

BY THE WAY
全局变量和局部变量若名称一样,则优先使用局部变量,如上述程序中执行结果为a=2。

常量

  • 字面常量
    int a=80;其中80就是一个字面常量
  • const修饰的常变量
    const int a=80;其中被const所修饰的a即为一个常变量,后续不可被更改,且必须初始化
  • #define定义的修饰符常量
    #define a 80
  • 枚举常量
enum sex
{
MALE,
FAMALE//打印的时候若第一个没初始化则从0开始依次赋值,若赋值则从赋的值开始依次往后赋
}

枚举和define常量区别:

  • define定义的常量不可以进行调试;

  • define定义的标识符不具有类型,枚举有类型(如下方A,B,C就是day型)

字符串
打印字符串使用格式化输出%s打印,但%s遇\0结束

#include <stdio.h>
int main()
{
 char *str = "hello";//字符串,由双引号引起来的一串内容,并且以\0结尾,结束的标志
 char arr1[] = "hello";//字符数组,由\0结尾
 char arr2[] = { 'h', 'i' };//字符数组
 char arr3[] = { 'h', 'i', '\0' };//字符数组
 printf("%s\n", str);
 printf("%s\n", arr1);
 printf("%s\n", arr2);
 printf("%s\n", arr3);
 return 0;
}

在这里插入图片描述

转义字符
\r回车,回到这一行的行首且把之前的内容刷走
一般常用:

  • \n回车
  • \t制表符,空格
  • \ddd 三位八进制,打印出来是十进制数
 printf("%d\n", '\13');//输出结果为11
  • \xddd,虽说可以跟三位十六进制数,打印结果是十进制数,但实际由于字符取值范围受限,所以最高位为0
 printf("%d\n", '\x25');//输出结果为37
 printf("%c\n", '\'');    //输出结果为'
 printf("%s\n", "\"");    //输出结果为"
 printf("%d\n", strlen("abcdef"));    //输出结果为6
     printf("%d\n", strlen("c:\test\328\test.c"));//输出结果为14,系统默认\t为一个字符,
     \32是一个字符(之所以不认为\328是一个字符是因为328(八进制)转十进制为216超出了字符可标识的数值范围) 

Strlen();用来求字符串长度 是库函数,需要调用<string.h>,也是遇到\0停止

注释

  • 块注释(不能嵌套)
  • 行注释

sizeof
不是库函数,是关键字,求所占字节大小,单位为字节
对于变量来说,如下两种写法都正确

 printf("%d\n", sizeof(a));
 printf("%d\n", sizeof a);

但对于求字符类型所占字节大小,必须带括号
printf("%d\n", sizeof(int));

scanf

  • scanf("%d",&a);&取地址符号,必用
  • vs中可能会提示 error C4996: ‘scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    解决方式:在最上方加入
    #define _CRT_SECURE_NO_WARNINGS 1

求数据类型范围(举例char类型)

  1. char类型占一个字节,一个字节八个比特位,分为有符号类型和无符号类型
  2. 无符号类型范围0000 0000—1111 1111即 0—28-1
  3. 有符号类型范围-128~127即-27 —27-1
    a.最高位充当符号位
    b.须知计算机中存储数据正数存二进制,负数存其补码,当127(即0111 1111)加1变为1000 0000,认为它为1 1000 0000,所以为-128
#include<stdio.h>
int main()
{
 char i=0;
 for (i = 0; i < 130; i++)
 {
  	printf("%d", i);
 }
 return 0;
}
//该程序是死循环,因为带符号char类型表示范围-128~127,所以i永远不可能大于130

BY THE WAY

  • 一般数据类型前不加东西表示该数据为带符号型数据,若想表示不带符号的数据则在数据类型前加unsigned
  • %d表示有符号形式的整型打印
  • %u表示无符号形式的整型打印

原码反码补码

  • 正数的原码反码补码都是他自己本身
  • 负数原码 最高位为1,其他位为数值位(-1原码1000 0001);反码:符号位不变,其他位取反(1111 1110);补码:原码符号为不变,其余按位取反再加1(1111 1111),

乱七八糟

#include<stdio.h>//引用头文件,#预处理
int main()
{
  printf("%d", i);//printf库函数
  return 0;//程序正常结束
}

c++和java中有字符串类型,但c中没有,c中定义字符串方法:

char *p="hello";

![Alt]

猜你喜欢

转载自blog.csdn.net/qq_43360037/article/details/96147131