【C语言】初始C语言的基础概念知识

常量

C语言中的常量和变量的定义的形式有所差异。
C语言中的常量分为以下以下几种:

  • 字面常量
  • const 修饰的常变量
  • #define 定义的标识符常量
  • 枚举常量

转义字符

转义字符释义
\?在书写连续多个问号时使用,防止他们被解析成三字母词
\’用于表示字符常量’
\“用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a警告字符,蜂鸣
\b退格符
\f进纸符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1~3个八进制的数字。 如: \130 X
\xdddd表示2个十六进制数字。 如: \x30 0

常见关键字

auto  break   case  char  const   continue  default  do   double else  enum   
extern float  for   goto  if   int   long  register    return   short  signed
sizeof   static struct  switch  typedef union  unsigned   void  volatile  while
  1. 关键字typedef
    **typedef 顾名思义是类型定义,这里应该理解为类型重命名。**通过typedef,我们可以为现有的数据类型(如int、float、struct等)创建一个新的别名,从而使代码更易读和可维护。
#include <stdio.h>

// 为数据类型int创建一个新的别名
typedef int Integer;

int main() {
    Integer num = 10;  // 使用新定义的别名Integer来声明变量
    printf("Number is: %d\n", num);

    return 0;
}

  1. 关键字static
    在C语言中,static是用来修饰变量和函数的。具体取决于它所修饰的上下文。下面是static可能的用法:
  • 在函数内部: 当在函数内部声明变量或函数时,使用static修饰符可以使其成为静态变量或静态函数。静态变量在程序运行期间保持其值,不会被反复初始化;而静态函数只能在声明它的文件内部调用。
void function() {
    static int count = 0; // 静态变量
    count++;
    printf("Count: %d\n", count);
}

static void helperFunction() {
    // 静态函数
}
  • 在全局变量: 在全局变量前面加上static关键字,可以将其作用域限制在当前文件内,避免在其他文件中被引用。
static int globalVar = 10; // 静态全局变量

这样定义的全局变量只能在当前文件内访问,其他文件无法使用extern关键字引用该变量。

  • 修饰局部变量-静态局部变量
  • 修饰全局变量-静态全局变量
  • 修饰函数-静态函数

static修饰局部变量改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。

一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,
不能在其他源文件内使用。

指针

内存

内存是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的 。
所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地
址。

指针使用实例:

#include <stdio.h>
int main()
{
 char ch = 'w';
 char* pc = &ch;
 *pc = 'q';
 printf("%c\n", ch);
    return 0;
}

上述代码中,ch 变量的值为 w ,ch 的指针 pc 指向 ch 的地址。另指针 pc 指向值 q,则变量 ch 的值变为 q。

指针变量的大小

#include <stdio.h>
int main()
{
	printf("%d\n", sizeof(char*));   //8
	printf("%d\n", sizeof(short*));   //8
	printf("%d\n", sizeof(int*));   //8
	printf("%d\n", sizeof(double*));   //8
	return 0;
}

结论:指针大小在32位平台是4个字节,64位平台是8个字节。

结构体

结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。
比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。
这里只能使用结构体来描述了。

例如:

struct Stu
{
    char name[20];//名字
    int age;      //年龄
    char sex[5];  //性别
    char id[15]//学号
};

结构体的初始化:

//打印结构体信息
struct Stu s = {"张三"20"男""20180101"};
//.为结构成员访问操作符
printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);
//->操作符
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps-
>id);

break和continue的区别

  • 其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 所以:while中的break是用于永久终止循环的。
  • continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。

猜中间数代码

int main()
{
 	int arr[] = {1,2,3,4,5,6,7,8,9,10};
 	int left = 0;
 	int right = sizeof(arr)/sizeof(arr[0])-1;
 	int key = 7;
 	int mid = 0;
 	while(left<=right)
 	{
 		mid = (left+right)/2;
 		if(arr[mid]>key)
 		{
 			right = mid-1;
 		}
 		else if(arr[mid] < key)
 		{
 			left = mid+1;
 		}
 		else
 			break;
 	}
 	if(left <= right)
 		printf("找到了,下标是%d\n", mid);
 	else
 		printf("找不到\n");
}

库函数

库函数通常指的是编程语言中预先定义好的函数,可以直接调用来实现特定功能的函数。不同的编程语言有不同的库函数,比如在C语言中有标准库函数(例如stdio.h和math.h),在Python中有各种内置函数和标准库函数(例如math模块和os模块)等。

在文档中学习库函数

简单的总结,C语言常用的库函数都有:

  • IO函数
  • 字符串操作函数
  • 字符操作函数
  • 内存操作函数
  • 时间/日期函数
  • 数学函数
  • 其他库函数

注: 但是库函数必须知道的一个秘密就是:使用库函数,必须包含 #include 对应的头文件。

学习库函数不需要全部记住,也记不住。重要的是学会如何使用文档去查询库函数。英语很重要,学好英语才能更好地看懂这些文档。

学会查询工具的使用

自定义函数

函数的组成:

ret_type fun_name(para1, * )
{
	statement;//语句项
}
ret_type 返回类型
fun_name 函数名
para1    函数参数

函数的参数

  1. 实际参数(实参):
    真实传给函数的参数,叫实参。实参可以是:常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。
  2. 形式参数(形参):
    形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效.

举例:

#include <stdio.h>
void Swap1(int x, int y)
{
	int tmp = 0;
	tmp = x;
	x = y;
	y = tmp;
}

void Swap2(int* px, int* py)
{
	int tmp = 0;
	tmp = *px;
	*px = *py;
	*py = tmp;
}
int main()
{
	int num1 = 1;
	int num2 = 2;
	Swap1(num1, num2);
	printf("Swap1::num1 = %d num2 = %d\n", num1, num2);
	Swap2(&num1, &num2);
	printf("Swap2::num1 = %d num2 = %d\n", num1, num2);
	return 0;
}

在上面的例子中,输出结果如下:

Swap1::num1 = 1 num2 = 2
Swap2::num1 = 2 num2 = 1

上面Swap1和Swap2函数中的参数 x,y,px,py 都是形式参数。在main函数中传给Swap1的num1,num2和传给Swap2函数的&num1,&num2是实际参数。

Swap1函数在调用的时候,x,y拥有自己的空间,同时拥有了和实参一模一样的内容。所以我们可以简单的认为:形参实例化之后其实相当于实参的一份临时拷贝

函数的调用:

  • 传值调用
    函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参。

  • 传址调用
    传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。
    这种传参方式可以让函数和函数外边的变量建立起正真的联系,也就是函数内部可以直接操作函数外部的变量。

函数的声明和定义

  • 函数声明:
    告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,无关紧要。
    函数的声明一般出现在函数的使用之前。要满足先声明后使用。
    函数的声明一般要放在头文件中的。

  • 函数定义:
    函数的定义是指函数的具体实现,交待函数的功能实现。

数组

#include <stdio.h>
int main()
{
    int arr[10] = {1,23,4,5};
 printf("%p\n", arr);
    printf("%p\n", &arr[0]);
    printf("%d\n", *arr);
    //输出结果
    return 0;
}

数组名是数组首元素的地址

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛应用于编程领域的计算机编程语言,它是由贝尔实验室的Dennis Ritchie于1972年发明的。C语言基础知识包括以下几个方面: 1. 语法和关键字:C语言的语法规则较为简洁,并且具有严格的书写格式。例如,变量的声明需要指定数据类型、变量名和初始值(可选),语句结束需要使用分号等。C语言中有一些特殊的关键字,如if、for、while等,这些关键字用于构建流程控制的结构。 2. 数据类型:C语言中主要支持的数据类型有基本数据类型和派生数据类型。基本数据类型包括整型、浮点型、字符型和布尔型等。派生数据类型包括数组、结构体和指针等,这些数据类型可以通过组合基本数据类型或其他派生数据类型来创建。 3. 变量和常量:在C语言中,变量是存储数据的容器,可以通过定义变量来表示不同类型的数据。常量是指程序中不可改变的固定值。变量和常量都需要通过标识符来命名,并且在使用前需要进行声明或定义。 4. 运算符:C语言中包含了一系列的运算符,用于完成各种数学和逻辑运算。常见的运算符包括算术运算符、关系运算符、逻辑运算符和条件运算符等。运算符可以对变量或常量进行操作,从而进行数据的处理和计算。 5. 控制语句:C语言中的控制语句主要包括顺序结构、选择结构和循环结构。顺序结构表示程序按照代码的顺序执行,选择结构用于根据条件选择执行不同的代码块,循环结构可以重复执行特定的代码块。 总之,C语言基础知识涵盖了语法规则、数据类型、变量和常量、运算符以及控制语句等方面。掌握这些基础知识对于学习和理解C语言编程是至关重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值