(初识C语言p3) C语言从入门到入土(入门篇)(二)

简介: 初识C语言 什么是C语言 第一个C语言程序 数据类型 变量、常量 字符串+转义字符+注释 选择语句 循环语句 函数 数组 操作符 常见关键字

12. #define 定义常量和宏


//define 定义标识符常量
#define MAX 1000
//define 定义宏
#define ADD(x, y) ((x)+(y))
#include <stdio.h>
int main ()
{
    int sum = ADD ( 2 , 3 );
    printf ( "sum = %d\n" , sum );
    sum = 10 * ADD ( 2 , 3 );
    printf ( "sum = %d\n" , sum );
    return 0 ;
}


27.png

28.png

与函数差不多,各有优缺点,后面会讲    

28.png

13. 指针


//对于指针,有很多人一听到就会怕,其实指针也没有那么恐怖,而且现在还是在"初识C语言"中,只会让大家对于这些东西有一个大体的了解,所以大家干就完了=。=!


13.1 内存


内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。

所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是 1 个字节 。

为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该 内存单元的地 址 。


29.png30.png

变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。

取出变量地址如下:

#include <stdio.h>
int main ()
{
int num = 10 ;
& num ; // 取出 num 的地址
    // 注:这里 num 的 4 个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址)
printf ( "%p\n" , & num ); // 打印地址, %p 是以地址的形式打印
return 0 ;
}


31.png32.png


PS:

地址存放是16进制的


33.png


 那地址如何存储,需要定义指针变量。


int num = 10 ;
int * p ; //p 为一个整形指针变量
p = & num ;
指针的使用实例:
#include <stdio.h>
int main ()
{
int num = 10 ;
int * p = & num ;
* p = 20 ;
    return 0 ;
}

//这里num本来是10,*p就是相当于num,即结果就是num等于20。


34.png


以整形指针举例,可以推广

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

//这里ch为原来的'w',改为了'q'。


35.png


PS:对于指针变量的用法 (存放地址是为了以后要用的时候通过p去访问a,或者改变a)

36.png


我们把地址也称为指针   这个变量(如p)是用来存放地址的也是用来存放指针的所以也称为指针变量,当你在使用指针变量的时候其实是在使用里面的地址(如a)


总结:指针就是地址,地址也被称为指针,当指针(或地址)要被存起来的时候,这个变量就被称为指针变量,这个指针变量就是用来存放地址的(存放别人的地址)(在指针变量的眼里所有的东西都是地址,只要你把一个东西存进去,他就会把他当做地址)


13.2 指针变量的大小


#include <stdio.h>

// 指针变量的大小取决于地址的大小

//32 位平台下地址是 32 个 bit 位(即 4 个字节)

//64 位平台下地址是 64 个 bit 位(即 8 个字节)

int main ()
{
    printf ( "%d\n" , sizeof ( char * ));
    printf ( "%d\n" , sizeof ( short * ));
    printf ( "%d\n" , sizeof ( int * ));
    printf ( "%d\n" , sizeof ( double * ));
    return 0 ;
}

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

//这个大小就没啥好说的哈,大伙记住就行。14. 结构体

结构体是 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 );

(也是先让大家了解结构体哈!,不懂完全没有问题=。=!)

本章完!!!

接下来就会按照"初识C语言"中的内容逐个详解!!!

让大家更好地去体会C语言的魅力!!!

如果我的文章对大家有帮助的话,请来个点赞加关注吧!

当然要是有什么不对的地方,欢迎大家在评论区斧正!

让我们一起加油吧!!!!!

相关文章
|
2月前
|
C语言
王桂林C语言从放弃到入门课程
课程目标16天,每天6节课,每节40分钟课堂实录,带你征服C语言,让所有学过和没有学过C语言的人,或是正准备学习C语言的人,找到学习C语言的不二法门。适用人群所有学过和没有学过C语言的人,或是正准备学习C语言的人!
26 2
王桂林C语言从放弃到入门课程
|
2月前
|
存储 编译器 C语言
初识C语言——详细入门(系统性学习day4)
初识C语言——详细入门(系统性学习day4)
|
2月前
|
存储 自然语言处理 编译器
C语言从入门到实战——编译和链接
在C语言中,编译和链接是将源代码转换为可执行文件的两个主要步骤。 编译过程包括以下步骤: 1. 预处理:将源代码中的预处理指令(如`#include`和`#define`)替换为实际的代码。 2. 编译:将预处理后的代码转换为汇编语言。 3. 汇编:将汇编语言转换为机器码指令。 链接过程包括以下步骤: 1. 目标文件生成:将每个源文件编译后生成的目标文件(`.o`或`.obj`)进行合并,生成一个总的目标文件。 2. 符号解析:查找并解析目标文件中的所有符号(例如全局变量和函数名),以确保每个符号都有一个唯一的地址。 3. 地址重定位:根据符号表中符号的地址信息,将目标文件中的所有地址引用
43 0
|
2月前
|
编译器 程序员 C语言
C语言从入门到实战——动态内存管理
在C语言中,动态内存管理是指程序运行时,通过调用特定的函数动态地分配和释放内存空间。动态内存管理允许程序在运行时根据实际需要来分配内存,避免了静态内存分配在编译时就确定固定大小的限制。
46 0
|
2月前
|
编译器 Linux PHP
C语言从入门到实战——预处理详解
C语言预处理是C语言编译过程的一个阶段,它在编译之前对源代码进行一系列的处理操作,包括宏替换、文件包含、条件编译等,最终生成经过预处理的代码,然后再进行编译。
48 0
|
2月前
|
存储 缓存 C语言
C语言从入门到实战——文件操作
C语言中的文件操作是通过使用文件指针来实现的。可以使用标准库中的函数来打开、读取、写入和关闭文件。
57 0
|
19天前
|
存储 自然语言处理 编译器
振南技术干货集:振南当年入门C语言和单片机的那些事儿(3)
振南技术干货集:振南当年入门C语言和单片机的那些事儿(3)
|
16天前
|
编译器 C语言
函数深入解析(C语言基础入门)
函数深入解析(C语言基础入门)
|
16天前
|
C语言
数组深入剖析(C语言基础入门)
数组深入剖析(C语言基础入门)
|
19天前
|
算法 C语言 芯片
振南技术干货集:振南当年入门C语言和单片机的那些事儿(1)
振南技术干货集:振南当年入门C语言和单片机的那些事儿(1)