c语言基本概念和数据类型常见问题

1. 两种特殊的转义字符:\ddd 和 \xdd是什么?

• \ddd :ddd表⽰1~3个⼋进制的数字。如: \130表⽰字符X

• \xdd :dd表⽰2个⼗六进制数字。如:\x30表⽰字符0

2. 指出里面哪些是转义字符,并给出运行结果

printf("%zd\n", strlen("c:\\test\128\abcd.c"));

转义字符有:  \\  ,  \12  ,  \a

\xxx表示八进制  \128里的因为8超过八进制0—7表示范围 所以只对\12转义

运行结果是:15

3. C语言是结构化语言,他有哪几种结构?控制语句是什么?

总体分位三种结构:
  1. 顺序结构
    • 程序按照代码的书写顺序从上到下执行。
  2. 选择结构
    • 根据条件的不同,选择执行不同的代码块。
    • 主要通过ifelse ifelseswitch等语句实现。
  3. 循环结构
    • 重复执行某段代码,直到满足特定的条件。
    • 包括forwhiledo-while等循环结构。

控制语句

  1. 条件(选择)语句
    • if 语句:如果满足某个条件,则执行相应的代码块。
    • if-else 语句:如果满足某个条件,则执行一个代码块;否则,执行另一个代码块。
    • else if 语句:用于在if-else结构中添加更多的条件判断。
    • switch 语句:根据表达式的值选择执行多个代码块中的一个。
  2. 循环语句
    • for 循环:用于在给定次数内重复执行代码块。
    • while 循环:当满足某个条件时,重复执行代码块。
    • do-while 循环:先执行一次代码块,然后检查条件;如果条件为真,则继续循环。
  3. 跳转语句
    • break 语句:用于立即退出最内层的循环或switch语句。
    • continue 语句:用于跳过当前循环的剩余部分,直接进入下一次循环。
    • goto 语句(不推荐使用):无条件跳转到程序中的指定位置。由于它可能导致代码难以理解和维护,因此在现代编程中很少使用。
  4. 其他语句
    • return 语句:用于从函数中返回一个值,并结束函数的执行。
    • exit() 函数(在stdlib.h中定义):用于立即终止整个程序的执行。

这些结构和控制语句共同构成了C语言程序的基本框架,使得程序员能够编写出结构清晰、易于理解和维护的代码。

4. 为什么要写注释? 编译器是如何看待注释掉的代码的呢?VS2022如何批量注释代码呢?

        注释可以帮助其他开发者(包括未来的你自己)理解代码的意图。 清晰的注释能够解释代码的目的、算法、数据结构等,使代码更易于阅读和理解。

编译器在处理代码时,对注释的态度是完全忽略的。

1. /* */ 的形式第⼀种⽅法是将注释放在 /*...*/ 之间,内部可以分⾏。

2. // 的形式 第⼆种写法是将注释放在双斜杠 // 后⾯,从双斜杠到⾏尾都属于注释。这种注释只能是单⾏,可以 放在⾏⾸,也可以放在⼀⾏语句的结尾。这是C99标准新增的语法。

注:详细写法可以看c语言常见概念(2)

5. C语言也有布尔类型?如何使用?

C语言本身并没有内建的布尔(Boolean)类型,但在C99标准中引入了一个头文件 <stdbool.h>该头文件中定义了宏 booltrue 和 false,它们分别对应于整数类型 _Bool,以及整数值 1 和 0

要使用布尔类型,你需要包含 <stdbool.h> 头文件,并可以使用 bool 类型来声明布尔变量,用 true 和 false 作为布尔值。

6. sizeof不是函数? sizeof还有返回值?? sizeof是在编译器工作的哪个时期运算的?

        sizeof 是⼀个关键字,也是操作符,专⻔是⽤来计算sizeof的操作符数的类型⻓度的,单位是字 节。 sizeof 操作符的操作数可以是类型,也可是变量或者表达式。

   sizeof 的返回值是一个 size_t 类型的值,这是一个无符号整数类型,用于表示对象的大小。在大多数现代系统上,size_t 通常是 unsigned long 或 unsigned long long 的别名。

  sizeof是在编译时期运算的 不是在运行时期  在代码进⾏编译的时候,就根据表达式的类型确定了,类型的常⽤,⽽表达式的执⾏却要在 程序运⾏期间才能执⾏,在编译期间已经将sizeof处理掉了,所以在运⾏期间就不会执⾏表达式了。

7 .下面这段代码为什么不输出3 ?为什么?
 int a = 2;
 sizeof(++a);
 printf("%d", a); 

sizeof 是在编译时期(compile time)进行运算的,而不是在运行时期(runtime)。这意味着编译器在编译程序时就能确定 sizeof 表达式的值,并将其嵌入到生成的代码中。这是因为 sizeof 的操作数必须是一个完整的类型或对象,这些在编译时期都是已知的。因此,sizeof 的结果是一个常量表达式,其值在编译时期就被确定了。

8. 了解一下头文件 limits.h 和 float.h 

C 标准库 – <limits.h> | 菜鸟教程 (runoob.com)limits.h:https://www.runoob.com/cprogramming/c-standard-library-limits-h.html

float.h:https://www.runoob.com/cprogramming/c-standard-library-float-h.html

9. C语言的数据类型有哪四种? char类型是有符号还是无符号?

不同的数据类型都有不同取值范围

  1. 整型(Integer Types)

    • char:字符型,通常用于存储字符,但它实际上是一个整数类型。其大小依赖于系统和编译器(通常为1个字节),可以是有符号的或无符号的。
    • short:短整型,通常用于存储较小的整数。
    • int:整型,用于存储整数。
    • long:长整型,用于存储更大的整数。
    • long long(或 __int64 在某些编译器中):更长的整型,用于存储非常大的整数。

    每种整型都可以是有符号的(能表示正数和负数)或无符号的(只能表示非负整数)。默认情况下,charshortint 和 long 都是有符号的,但可以通过在类型前添加 unsigned 关键字来声明为无符号的。

  2. 浮点型(Floating-Point Types)

    • float:单精度浮点型。
    • double:双精度浮点型。
    • long double:长双精度浮点型(可能比 double 精度更高,但这不是必需的)。
  3. 空类型(Void Type)

    • void:表示没有值或没有类型的类型。它通常用于函数返回类型、指针类型和泛型编程中。
  4. 其他类型

    • _Bool 或 bool(在包含 <stdbool.h> 后):布尔类型,可以取 true 或 false
    • 枚举类型(Enumerations):用户定义的类型,可以包含一组命名的整数值。
    • 指针类型(Pointers):用于存储内存地址的类型。

关于 char 类型的符号性,这取决于编译器和具体的实现。默认情况下,char 可以是有符号的也可以是无符号的,这取决于编译器和平台。为了明确指定 char 的符号性,你可以使用 signed char 或 unsigned char。在某些平台上,char 默认是有符号的,而在其他平台上则默认是无符号的。因此,在编写可移植代码时,最好明确指定 char 的符号性。

10. 变量创建的局部有限性原则究竟是什么?

变量创建的局部有限性原则是指局部变量只在其所在的函数内部(作用域内)可见和使用,并且在函数执行结束后,这些局部变量的内存会被自动释放,不再存在(生命周期结束)。同时,局部变量在使用前必须被初始化。

• 全局变量:在⼤括号外部定义的变量就是全局变量 全局变量的使⽤范围更⼴,整个⼯程中想使⽤,都是有办法使⽤的。

• 局部变量:在⼤括号内部定义的变量就是局部变量 局部变量的使⽤范围是⽐较局限,只能在⾃⼰所在的局部范围内使⽤的。

11. 局部变量和全局变量分别存在内存中的哪个位置?堆内如何存储变量?

1. 局部变量是放在内存的栈区                                        

2. 全局变量是放在内存的静态区

3. 堆区是⽤来动态内存管理的

···堆内存用于动态存储变量,通过malloccalloc等函数分配内存,并返回指向该内存的指针。程序员需手动管理堆内存,包括分配和释放。如果忘记释放内存,可能导致内存泄漏。使用这些函数时,应检查返回值以确保内存分配成功。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值