C语言入门学习

#define _CRT_SECURE_NO_WARNINGS 1   
#include<stdio.h>
//int main()
//#define MAX 10
//{

两个数相加
/*int num1 = 0;
int num2 = 0;
int sum = 0;
scanf("%d%d", &num1, &num2);
sum = num1 + num2;
printf("sum = %d\n,sum");
return 0;*/

两个数相加还能使用函数的形式进行相加:

int num1 = 10;

int num2 = 20;

int sum = 0;

sum = Add(num1,num2);  //其中 sum是函数的返回类型   Add是函数名   num1,num2是函数的变量,{}里面是函数体

printf(“sum = %d\n”,sum);

 

/*const int num = 4; //const -常属性,加上和就无法改变num的量 const修饰的常变量 :本质是变量但又拥有常属性
printf("%d\n", num);
num = 8;
printf("%d\n", num);*/
//int arr[MAX] = { 0 };
//printf("%d\n", MAX); //define 定义的标识符常量
//return 0;

//}
//enum Color
//{
// red,
// blue,
// yellow
//};
//int main()
//{
// enum Color color = blue; //enum 枚举常量 一一列举
// return 0;
//}

 

//int main()
//{
// char arr1[] = "abc"; //多个字符放在""中叫做字符串,单个字符放在''中叫做字符x ,"abc"--包含'a','b','c','/0'
// char arr2[] = { 'a','b','c' };
// //printf("%s\n", arr1);
// //printf("%s\n", arr2);
// printf("%d\n", strlen(arr1));
// printf("%d\n", strlen(arr2)); //arr2 输出的是随机值,因为要一直搜索到\0之后才会停止 ,\0是结束标志,不是字符串内容
// return 0;
//}

 

int main()
{
printf("%c\n", '\x60'); // \ddd ddd表示1-3个八进制数字 如 \130 x \xdd dd表示两个十六进制数字
return 0;
}

 转义字符 释义
\?
在书写连续多个问号时使用,防止他们被解析成三字母词
\'
用于表示字符常量'
\“
用于表示一个字符串内部的双引号
\\
用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a
警告字符,蜂鸣
\b
退格符
\f
进纸符
\n
换行
\r
回车
\t
水平制表符
\v
垂直制表符
\ddd
ddd表示1~3个八进制的数字。 如: \130 X
\xdd
dd表示2个十六进制数字。 如: \x30 0
函数:     函数的特点就是简化代码,代码复用
int Add(int x, int y)
{
  int z = x+y;   
  return z;
}
选择语句:

//int main()       //选择语句
//{
// int input = 0;
// printf("明年准备考研\n");
// printf("你要好好学习吗?(1/0)>:");
// scanf("%d\n", &input); //scanf :输入函数
// if (input == 1)
// printf("成为研究生\n");
// else
// printf("成为烂狗\n");
//
// return 0;
//}

循环语句:

 

//int main() //循环语句
//{
// int time = 0;
// printf("暑假每天学习\n");
// while (time < 10)
// {
// printf("每天学习时间:%d\n",time); //打印出time的变量
// time++;
//
//
//
// }
// if(time >=9) //条件语句
// printf("考研成功率提高\n");
//
// return 0;

数组的定义与使用:

 

//int main()
//{
// int arr[10] = { 1,2,3,4,5,6,7,8,9 }; //数组的定义和使用
// int i = 0;
// while (i<9)
// {
// printf("%d\n", arr[i]);
// i++;
//
// }
// //printf("%d\n", arr[5]); //下标的形式访问元素
//
// return 0;
//}

 

 

取模:

//int main()
//{
// int a = 5 % 2;
// printf("%d\n", a); //取模 :取5%2后的余数
// return 0;
//}

//int main()
//{


// int a = 1; //整型1占4个字节-32bit位
// int b = a << 2; //移(2进制)位操作符 << 左移 >> 右移
// printf("%d\n", b);
// printf("%d\n", a);
// return 0;
//}

 

二进制:

 

操作符:

算术操作符:

+ - * / %

移位操作符:

>> <<

位操作符:

& ^ |

赋值操作符:

= += -= *= /= &= ^=  |=    >>=   <<=

单目操作符:

!           逻辑反操作
-           负值
+           正值
&           取地址
sizeof      操作数的类型长度(以字节为单位)
~           对一个数的二进制按位取反    // 原码,反码,补码
--          前置、后置--
++          前置、后置++     //后置++:先使用,再++(int a =10,int b = a++;)  输出结果:b = 10,a=11,前置++ 反之。
*           间接访问操作符(解引用操作符)
(类型)       强制类型转换      列:int a =(int)3.14;  将3.14强制转换为整数类型
关系操作符:
>
>=
<
<=
!=   用于测试“不相等”
==      用于测试“相等”
逻辑操作符:
&&     逻辑与
||          逻辑或 
下标引用,函数调用和结构成员:
[]   ()    .     -> 

 原码,反码,补码:

  复数在内存中存储的时候,存储的是二进制的补码

列如:

补码:11111111111111111111   

反码:11111111111111111110   (补码的末尾减1)

原码:100000000000000001  (符号位(首位)不变,在反码的基础上取反)

如果 最高位是1 存的是负数,最高位是0,存的是正数

 

 

 

 常见关键字:(关键字不能与变量名冲突)
auto  break   case  char  const   continue  default  do   double else  enum  
extern(声明外部函数) float  for   goto  if   int   long  register    return   short  signed
sizeof   static struct  switch  typedef union  unsigned   void  volatile  while
static:
//static修饰局部变量
//局部变量的生命周期变长
//static修饰全局变量
//改变了变量的作用域--让静态的全局变量只能在自己所在的源文件内部使用(也就是出了源文件就无法使用了)
图例:

 

加上static修饰全局变量后

 

 

程序报错:无法解析的外部命令,说明改变了变量的作用域--让静态的全局变量只能在自己所在的源文件内部使用

 

 

//static修饰函数

//改变了函数的链接属性(也是改变看函数的作用域(不准确))
 
 

#define 定义常量和宏:

 

 

 

 

指针:

 

 

三者之间的关系图:

存储的空间名为a,存储了10,取a的地址存在指针p中(p为一个整形指针变量),若p=20,那么通过p找到a存储的值也变为20.

其中00x0012ff40是地址名

指针是个变量,用来存放地址,用*p来用地址

 

 

指针大小在32位平台是4个字节,64位平台是8个字节。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
posted @ 2022-05-20 16:44  畑鹿惊  阅读(126)  评论(0编辑  收藏  举报