C 语言中的内存分析

C 语言中的内存分析

一、进制

我们需要了解的4中进制:二进制、八进制、十进制、十六进制

#include <stdio.h>

int main()

{

//默认情况下是十进制

intnumber = 12;

//二进制

intnumber2=0b1100;

//八进制

intnumber3 = 014;

//十六进制

intnumber = 0xc;

return0;

}

Printf以不同进制形式输出的类型:

%d 通常以十进制输出一个整数

%o通常以八进制输出一个整数

%x通常以十六进制输出一个整数

%u 以不带符号的十进制输出整数

%c 输出一个字符

%s 输出一个或者多个字符串

%f 以小数形式输出单双度数值,默认情况下是6位

%e移标准指数形式输出单双精度数,数字部分小水位数为6位

任何数据在内存中都是以二进制的形式存在的!

一个int类型数据占据4个字节、32bit

例如:

Int number=12;

在内存中显示为:

0000  0000  0000  0000 0000  0000  0000 1100

N位二进制的取值范围:

2位二进制位的取值范围:0~3

3位二进制位的取值范围:0~7

N为二进制位的取值范围:2n-1

把一个整数以二进制输出的代码测试:

Void putBinary(intn)

{

Int bits = sizeof(n)*8-1;

While(bite>=0){

Printf(“%d”,n>>bit&1);

If( bits%4==0)

Printf(“ ”);

}

Printf(“\n”);

}

二、数据类型的取值范围:

Char-----1个字节---8bit---取值范围:-27~27-1

Int-------4个字节---32bit---取值范围:-231-231-1

Float----4个字节----32bit---取值范围:3.4e-38~3.4e38||-3.4e38~-3.4e-38

Double---8个字节---64bit—取值范围:1.7e-308~1.7e308||-1.7e308~1.7e-308三、类三、型说明符:

Int --------4个字节-----------%d

short --------4个字节-----------%d

long --------8个字节-----------%ld

long long ----8个字节-------%lld

signed有符号:正数、0、负数

unsigned无符号:包含0、正数

signed与unsigned的区别:signed最高位要当做符号位;unsigned最高位不要当作符号位。

四、位运算

1. &按位与

例如:

9&5;

把数据转化成二进制进行与运算

2. |按位或

例如:

9|5;

把数据转化成二进制进行或运算

3. ^按位异或:只要两个进制位不行同就为1相同就位0

例如:

9^5;

把数据转化成二进制进行异或运算

N^N 结果为0;

任何数值跟0异或得到原来的数值

4. ~按位去反

例如:

~9;

9的所有二进制位都进行取反;

5.<<左移

把某个整数的二进制位全部往左移动N位高位丢弃低位补0

6. >>右移

把某个整数的二进制位全部往右移动N位保持符号位不变

五、char

//单引号‘’只能括注单字节的字符

//Char c=’男’;这个是错误的写法

//char c = “A ”;这个也是错误写法

//Char c = A ; 这个也是错误的写法

Char可以当作整数来用,它的取值范围为:-128~127;

转义字符:

\n                 换行                 ASCII的值为10

\t            跳到下一个tab位置        ASCII的值为9

\\             代表一个反斜线字符       ASCII的值为92

\’                  代表一个单引号字符                 ASCII的值为39

将一个字母的大小写进行转换

大写upper

小写lowwer

Char upper(char c)

{

If(c>=’a’&&c<=’z’)

return  c-32;

elseif

return  c;

}

时间: 2024-08-03 18:01:23

C 语言中的内存分析的相关文章

C语言中关于内存那些事

因为要学IOS开发,为了更好的学习OC所以又从头开始学习C语言,这篇文章主要记录关于C语言中内存布局.以及不同的内存区域的特点. C语言的程序内存布局,从高到低依次为:栈区.堆区.未初始化数据区.初始化数据区.代码区. 一.栈区 由编译器自动管理,无需程序员手工控制.存放函数的参数值.局部变量的值等.栈区内容从高地址到低地址分配,从低地址到高地址存取. int a = 0; int b = 0; int array[5] = {1, 2, 3, 4, 5}; printf("&a....

C语言中堆内存的开辟和释放与内存处理函数

C语言动态分配内存,malloc的出现就是来弥补静态内存分配的缺点 比如说我们在定义数组的时候,数组的长度必须是一个常量,不能改变的值,假如我事先定义了数组,一旦业务需求发生改变,那么这个数组就不能再使用了. 传统的数组定义也就是静态分配,是不能够手动释放的,只能等待系统释放,静态分配的内存,是分配在栈中的,C语言中的函数调用也是通过栈来实现的,栈有一个特点就是先进后出,在调用函数的时候,是先压入栈,然后从最上面的函数开始执行 我们先来看看内存四区,分别为堆区,栈区,数据区,代码区,对于这四个区

c语言中的内存管理

一:内存分为5大区域 栈区     --  存放局部变量 堆区     --  程序运行过程中,动态分配的内存 BSS区    --  未初始化的全局变量和静态变量 数据段    --  已经初始化的全局变量和静态变量 代码段    --  程序编译产生的二进制的数据 内存分配方式: ·1)静态分配,在编译的阶段分配的内存     int a = 10;    静态分配的内存在程序结束后会自动释放 2)动态分配,在程序的运行过程中进行的内存分配 ,动态分配的内存一般存储在堆中,程序结束后内存不会

c 从语言中的内存管理

在C里,内存管理是通过专门的函数来实现.另外,为了兼容各种编程语言,操作系统提供的接口通常是 C 语言写成的函数声明(Windows 本身也由C和汇编语言写成). 1 分配内存 malloc 函数 需要包含头文件: <stdlib.h>   and   <malloc.h> 函数声明(函数原型) void *malloc(int size); 说明:malloc 向系统申请分配指定size个字节的内存空间.返回类型是 void* 类型.void* 表示未确定类型的指针.C,C++规

c语言中的内存分配malloc、alloca、calloc、malloc、free、realloc、sbr

C语言跟内存分配方式 (1) 从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量. (2) 在栈上创建.在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限. (3)从堆上分配,亦称动态内存分配.程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存.动态内存的

C语言中动态内存的分配

动态内存分配:根据需要随时开辟,随时释放的内存分配方式.分配时机和释放时机完全由程序员决定,由于没有数据声明,这部分空间没有名字.无法像使用变量或数组那样通过变量名或数组名引用其中的数据,只能通过指针变量来访问.注意malloc与free一般都是成对出现的只要成功申请的空间使用完后必须要释放,否则会造成内存的泄露. 1 #include<stdio.h> 2 #include<stdlib.h> 3 int sum(int *,int);///函数的声明 4 int mian()

C语言中的内存对齐

由下面的测试代码可以总结出两点:(1)内存对齐是针对结构体而言的    (2)编译时char类型的申请的空间由其后面的数据类型决定. #include<stdio.h> enum Season { Spring,Summer,Autumn }; enum ENUM Enum = Autumn; union UNION { int a; char b; double c; }; union UNION Union; struct STRUCT { char b; //4字节 int a; //4

c语言中的内存操作函数

int arr[20] =   {0};//再定义并初始化的时候可以这样操作: arr[20] = {0};//不能这样修改数组的值.语法错误. int str[20] = {0}; //将一块内存初始化一个值 memset(arr ,0 ,sizeof(arr))//第一个参数表示初始化地址,第二个参数表示初始化值,第三个参数表示初始化内存大小. memcpy(arr ,str ,sizeof(str))//将str内存空间的内容拷贝到arr指向的内存空间,拷贝的大小为sizeof(str)

黑马程序员— C语言基础之内存剖析

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 在学习C语言基础知识时,老师对内存的分析很重视,几乎每个知识点都会帮我们分析内存存储情况,透过内存的分析也让我们对C语言有了更深的一些了解,C语言跟其他计算机语言相比,对内存的分析和要求更高,下面我们一起来了解和学习一下C语言的内存剖析,是我个人的在学习中的一些总结,如果问题或者不到位的地方也希望大家能够一起交流和指正. 第一讲  进制 进制是一种计数的方式,数值的表示形式,一般我们C语言主要