【C语言基础一】知识点大纲

"本文探讨了C语言的基础知识,包括打印字符串"HelloWorld"的程序,字符与字符串的编码,以及类型长度。同时深入讲解了内存管理,如sizeof运算符的应用,结构体的字节对齐规则,以及变量的存储位置、作用域和生命周期。此外,还涉及了位运算和内存寻址等概念,以及程序中涉及到的内存分配与释放操作。"

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

【大纲】

第一题:

【原题】

用C语言写一个打印字符串“HelloWorld”的程序

【解答】

#include<stdio.h>

int main() {

printf("HelloWorld\n");

return 0;

}

【拓展】

  1. 字符(串)在多字节和宽字节编码规范下的区别【char和wchar_t】
  2. 字符和数字的转换
  3. ‘0’、0‘\0’、NULL的区别
  4. 格式化字符串:%c、%d、%s、%u、%x、%o、%p、%f、%n
  5. printf()的安全问题——“心血漏洞”;

 

 

6.“%n”的问题

 

7.main()函数的问题

 

 

第二题

【原题】

请写出下面C语言类型的长度(单位为字节)

sizeof(char)

sizeof(short)

sizeof(int)

sizeof(long)

sizeof(long long)

sizeof(double)

【解答】

 

【拓展】

  1. sizeof是一个函数吗?
  2. 关于“sizeof”,下面哪些写法是不合法的:

 

3. sizeof和strlen的区别

第三题

【原题】

计算下面结果,并说明理由

typedef struct a {

char a1;

long a2;

char a3;

double a4;

}A;



typedef struct b {

char b1;

char b2;

long b3;

double b4;

}B;

【解答】

 

【拓展】

1.字节对齐(自然对齐)

为何要字节对齐【为了提高cpu读取数据的速度】

结构体字节如何对齐【原则1:某变量在内存中的存储位置的地址需要是该变量长度(以字节为单位)的整数倍;原则2:最后总的结构体大小应该是该结构体内最大变量长度的整数倍】

2.自定义对齐方式

#pragma pack(X)     //X为要自定义的数据宽度(以字节为单位)

3.栈对齐

X86平台下按4个字节对齐;X64平台下按8字节对齐,并且总的大小按16字节对齐

第四题

【原题】

分析下面程序中每个变量的存储位置,作用域,生命周期

int a = 0;

char* p1;

static int x = 10;

void main() {

int b = 0;

char s1[] = "123";

char* p2;

char* s2 = "123";

static int c = 0;

p1 = (char*)malloc(128);

p2 = (char*)malloc(256);

free(p1);

free(p2);

}

【解答】

变量

存储位置

作用域

生命周期

a

全局(静态)区(.data)

整个项目文件

整个程序

p1

全局(静态)区(.bss)

整个项目文件

整个程序

x

全局(静态)区(.data)

当前源文件

整个程序

b

所在函数

所在函数执行期间

s1

所在函数

所在函数执行期间

p2

所在函数

所在函数执行期间

s2

所在函数

所在函数执行期间

c

全局(静态)区

所在函数

整个程序

【拓展】

1.内存

 

 

1.有了全局变量,为何还需要全局静态变量【为了解决命名冲突的问题】

2.指针在X86平台下占4个字节,在X64平台下占8个字节

3.内存的寻址模式

逻辑地址、线性地址、物理地址

 

 

4. PE文件结构

 

 

 

第五题

【原题】

 (char)(127 << ) + 1 =
 (char)(-1 >> ) + 1 =
 1 << 2 + 3 =
 15 & 240 =
 (char)(-128 * -1)
 2017`2017=
 20170304`0=
 (0x12345678>>24)&0xFF=
 0x12345678|`0xFFFEFFFF=
 任意进制转换

【解答】

【拓展】

 

  1. 补码

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NovFif

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值