C语言入门1

本文介绍了计算机内存的基本概念,包括内存条的硬件属性及其逻辑特性,详细解释了堆的概念及如何通过malloc和free函数来动态分配和释放内存。此外,还介绍了指针的基本使用方法,并概述了C语言中文件操作的基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内存

从硬件角度:内存实际上是电脑的一个配件(一般叫内存条)。从逻辑角度:内存是这样一种东西,它可以随机访问(随机访问的意思是只要给一个地址,就可以访问这个内存地址)、并且可以读写(当然了逻辑上也可以限制其为只读或者只写);堆(heap):用于存放进程运行中被动态分配的内存段,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减),这个堆概念与数据结构中“堆”的概念不同,只是一个内存区域。忘记释放内存,导致内存泄漏,动态内存的申请与释放必须配对,程序中malloc和free的使用次数一定要相同,否则肯定有错误。
可以使用 sizeof 运算符。表达式 sizeof(xx) 得到对象或类型的存储字节大小,int a 在声明的时候就已经建立了存储空间。常量是固定值,在程序执行期间不会改变,变量其实只不过是程序可操作的存储区的名称。常量存储区是静态存储区域:内存在程序编译的时候已经分配好,这块内存在程序的整个运行期间都存在,例如全局变量,static变量。

void free(void *address);

该函数释放 address 所指向的内存块,释放的是动态分配的内存空间。

void *malloc(int num);

在堆区分配一块指定大小的内存空间,用来存放数据。这块内存空间在函数执行完成后不会被初始化,它们的值是未知的。

指针使用

#include <stdio.h>
 
int main ()
{
    int var_runoob = 10;
    int *p;              // 定义指针变量
    p = &var_runoob;
 
   printf("var_runoob 变量的地址: %p\n", p);
   printf("var_runoob 变量的值: %p\n", *p);
   return 0;
}
输出:var_runoob 变量的地址: 0x7ffeeaae08d8

指针变量声明的一般形式为:type *var-name;使用指针时会频繁进行以下几个操作:定义一个指针变量、把变量地址赋值给指针、访问指针变量中可用地址的值
在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。

文件操作

一个文件,无论它是文本文件还是二进制文件,都是代表了一系列的字节。C 语言不仅提供了访问顶层的函数,也提供了底层(OS)调用来处理存储设备上的文件

使用gcc编译

gcc hello.c -o main.out
./main.out

位运算

位运算符

0&0=0;   
0&1=0;    
1&0=0;     
1&1=1;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值