C语言基础

原码、反码、补码

二进制有:原码 反码 补码

计算机在任何情况下都只能识别二进制,在底层存储数据的时候,一律存储的是二进制的补码形式

  • 对于一个正数来说:二进制原码、反码、补码是同一个,完全相同。
 int i = 1;
 
 二进制原码:00000000 00000000 00000000 00000001
 二进制反码:00000000 00000000 00000000 00000001
 二进制补码:00000000 00000000 00000000 00000001 
  • 对于一个负数来说:二进制原码、反码、补码是什么关系呢?
	byte i = -1;
 
 二进制原码:10000001
 二进制反码(符号位不变,其它位取反):11111110
 二进制补码(反码+1):11111111

运算符

单目运算 sizeof

1、数据类型/数组变量/指针: 返回所占用的内存字节数
sizeof(int);// 占4字节内存,根据编译器的版本决定
char a[] = “abc”;//sizeof(a)=4,字符串末尾还存在一个NULL终止符。
int a[50]; //sizeof(a)=4*50=200; 求数组所占的空间大小
int *a=new int[50];// sizeof(a)=4; a为一个指针,
   

算术运算符功能优先级
++自增2
自减2
*、/乘除3
%求余/取模3
+、-加减4
赋值运算符功能优先级
=赋值14
+=加后赋值14
-=减后赋值14
*=乘后赋值14
/=除后赋值14
%=取模后赋值14
关系运算符功能优先级
>大于6
<小于6
>=大于或等于6
<=小于或等于6
!=不等于7
==相等7
逻辑运算符功能优先级
逻辑非2
&&逻辑与11
||逻辑或12
位操作运算符功能优先级
&按位与8
|按位或10
~按位非2
^按位异或9
>>右移(M>>N等于 M/2 的N次方)5
<<左移(M<<N等于 M*2 的N次方)5

数据类型

在这里插入图片描述

1 基本类型

整型变量|整型变量符|所占空间|
short|短整型|2Byte(16Bit)
int|整型|4Byte(32Bit)
long|长整型|4Byte(32Bit)
unsigned short |无符号短整型|2Byte(16Bit)
unsigned int|无符号整型|4Byte(32Bit)
unsigned long|无符号长整型|4Byte(32Bit)

实型变量|实型变量符|所占空间|
float|单精度|4Byte(32Bit)
double|双精度|8Byte(64Bit)
long double|长双精度|16Byte(128Bit)

字符变量|字符变量符|所占空间 |
char |字符|  1Byte(8Bit)

整型常量|实例|
八进制整型常量|012
十进制整型常量|12
十六进制整型常量|0x12
长整型常量|12L

实型常量|实型常量符|
小数形式|-12.52.5
指数形式|2.5E52.5*105次方)

转义字符|含义 
\n |换行
\b|退格
\r|回车

1.1 字符串处理函数

函数含义
char *strcpy(char *dest, const char *src)字符串复制函数
int strcmp(const char *str1, const char *str2)字符串比较函数
size_t strlen(const char *str)字符串长度测量函数
char *strcat(char *dest, const char *src)字符串连接函数
char *strstr(const char *haystack, const char *needle)字符串查找函数
char *strchr(const char *str, int c)字符查找函数
void *memset(void *str, int c, size_t n)字符复制函数
  • strcpy(字符串复制函数)

作用是将 str2 复制到 str1 中去。

str1 的长度不能小于 str2 的长度 str1 必须为字符数组的形式、str2 可以为 字符串常量 和 字符组名

  • strcmp(字符串比较函数)

因为字符串不能用等号来比较大小,所以就用 strcmp 函数来比较 比较 ASCLL码

比较的结果由函数值带回:

(1)如果字符串1与字符串2相同,则函数值返回为0。

(2)如果字符串1 > 字符串2,则函数值返回一个正整数。

(3)如果字符串1 < 字符串2,则函数值返回一个负整数。

  • strlen(字符串长度测量函数)

返回字符串 s1 的长度。(不包括 ‘\0’ 在内)

  • strcat(字符串连接函数)

作用是把两个字符数组中的字符串连接起来,把字符串2连接到字符串1的后面,结果放在字符数组1中

  • strstr (字符串查找函数)

函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址(指针);否则,返回NULL。

  • strchr(字符查找函数)

返回一个指针,该函数返回在字符串 str 中第一次出现字符 c 的位置,如果未找到该字符则返回 NULL。

  • memset

复制字符 c 到str 的前n项,字符c 为 字符类型 acsll码

注意,如果字符 c 为 字符NULL ,十进制为 0的情况,此时的字符数组str必须要首地址才能重新赋值

2 构造类型

2.1 结构体:struct

结构体(struct)是具有相同类型不同类型的数据构成的数据集合。

结构体的声明并不会分配内存空间,构造类型定义变量时才会为其相应的变量分配内存空间

2.2 共用体:union

  • 结构体与共用体的区别

结构体

结构体大小是 结构体内部的成员的空间大小之和

共用体

共用体内存长度是内部最长的数据类型的长度。
共用体的地址和内部各成员变量的地址都是同一个地址

2.3 数组

将数组名传入函数时, 该数组名称则再也不是数组的首地址, 会成为普通的指针

sizeof(arr)/sizeof(arr[0])  
当前定义的函数内可以使用,传递后则不能使用

3 指针类型

3.1 函数指针、指针函数

指针函数,即本质是一个函数,函数返回类型是指针。
函数指针,即本质是一个指针变量,是指向函数地址的指针变量。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值