c 技术
文章平均质量分 62
luckyone906
这个作者很懒,什么都没留下…
展开
-
C语言预处理命令总结说明
后是指令关键字,在关键字和 # 号之间允许存在任意个数的空白字符,整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。预处理功能是C语言特有的功能,它是在对源程序正式编译前由预处理程序完成的,程序员在程序中用预处理命令来调用这些功能。条件编译允许只编译源程序中满足条件的程序段,使生成的目标程序较短,从而减少了内存的开销并提高了程序的效率。#elif 如果前面的#if给定条件不为真,当前条件为真,则编译下面代码。#ifdef 如果宏已经定义,则编译下面代码。原创 2024-05-01 20:51:30 · 161 阅读 · 0 评论 -
C语言#include的用法详解(文件包含命令)详解
#include叫做文件包含命令,用来引入对应的头文件(.h文件)。#include 也是C语言预处理命令的一种。#include 的处理过程很简单,就是将头文件的内容插入到该命令所在的位置,从而把头文件和当前源文件连接成一个源文件,这与复制粘贴的效果相同。#include 的用法有两种,如下所示:#include <stdHeader.h>#include "myHeader.h"使用尖括号< >和双引号" "的区别在于头文件的搜索路径不同:使用尖括号< &原创 2024-05-01 20:50:32 · 3915 阅读 · 0 评论 -
C语言各种预处理命令详解
但是现在有个问题,程序中要实现的某个功能在 VS 和 GCC 下使用的函数不同(假设 VS 下使用 a(),GCC 下使用 b()),VS 下的函数在 GCC 下不能编译通过,GCC 下的函数在 VS 下也不能编译通过,怎么办呢?不同的平台下必须调用不同的函数,并引入不同的头文件,否则就会导致编译错误,因为 Windows 平台下没有 sleep() 函数,也没有 <unistd.h> 头文件,反之亦然。你看,在不同的平台下,编译之前(预处理之后)的源代码都是不一样的。这种以#号开头的命令称为预处理命令。原创 2024-05-01 20:48:38 · 331 阅读 · 0 评论 -
C语言指针是什么?彻底理解C语言指针的概念
当程序被加载到内存后,操作系统会给不同的内存块指定不同的权限,拥有读取和执行权限的内存块就是代码,而拥有读取和写入权限(也可能只有读取权限)的内存块就是数据。需要注意的是,虽然变量名、函数名、字符串名和数组名在本质上是一样的,它们都是地址的助记符,但在编写代码的过程中,我们认为变量名表示的是数据本身,而函数名、字符串名和数组名表示的是代码块或数据块的首地址。( )表示取值操作,整个表达式的意思是,取出地址 0X1000 和 0X2000 上的值,将它们相加,把相加的结果赋值给地址为 0X3000 的内存。原创 2024-05-01 20:45:11 · 363 阅读 · 0 评论 -
C语言指针变量的定义和使用详解(精华)
上节我们说过,CPU 读写数据必须要知道数据在内存中的地址,普通变量和指针变量都是地址的助记符,虽然通过 *p 和 a 获取到的数据一样,但它们的运行过程稍有不同:a 只需要一次运算就能够取得数据,而 *p 要经过两次运算,多了一层“间接”。值得注意的是,p_a 需要的一个地址,a 前面必须要加取地址符&,否则是不对的。*&a可以理解为*(&a),&a表示取变量 a 的地址(等价于 pa),*(&a)表示取这个地址上的数据(等价于 *pa),绕来绕去,又回到了原点,*&a仍然等价于 a。原创 2024-05-01 20:43:43 · 66 阅读 · 0 评论 -
C语言指针数组详解(数组每个元素都是指针)
parr 是指向数组 arr 的指针,确切地说是指向 arr 第 0 个元素的指针,它的定义形式应该理解为int *(*parr),括号中的*表示 parr 是一个指针,括号外面的int *表示 parr 指向的数据的类型。第二个 printf() 语句中,parr+i 表示第 i 个元素的地址,*(parr+i) 表示获取第 i 个元素的值(该元素是一个指针),**(parr+i) 表示获取第 i 个元素指向的数据。为了便于理解,可以将上面的字符串数组改成下面的形式,它们都是等价的。原创 2024-05-01 20:42:08 · 296 阅读 · 0 评论 -
C语言函数指针(指向函数的指针)详解示例演示
一个函数总是占用一段连续的内存区域,函数名在表达式中有时也会被转换为该函数所在内存区域的首地址,这和数组名非常类似。我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使指针变量指向函数所在的内存区域,然后通过指针变量就可以找到并调用该函数。参数列表中可以同时给出参数的类型和名称,也可以只给出参数的类型,省略参数的名称,这一点和函数原型非常类似。注意( )的优先级高于*,第一个括号不能省略,如果写作returnType *pointerName(param list);//返回两个数中较大的一个。原创 2024-05-01 20:40:54 · 285 阅读 · 0 评论 -
C语言指针的总结详解(1)
程序在运行过程中需要的是数据和指令的地址,变量名、函数名、字符串名和数组名在本质上是一样的,它们都是地址的助记符:在编写代码的过程中,我们认为变量名表示的是数据本身,而函数名、字符串名和数组名表示的是代码块或数据块的首地址;5) 数组也是有类型的,数组名的本意是表示一组类型相同的数据。2) 给指针变量赋值时,要将一份数据的地址赋给它,不能直接赋给一个整数,例如int *p = 1000;p 可以指向 int 类型的数据,也可以指向类似 int arr[n] 的数组。定 义 含 义。原创 2024-05-01 20:39:15 · 154 阅读 · 0 评论 -
C语言基础MessageBox(......)用法详解
MessageBox() 功能显示一个消息对话框。 语法MessageBox(text,title{,icon{,button{,default}}}) 参数title:string类型,指定消息对话框的标题text:指定消息对话框中显示的消息,该参数可以是数值数据类型、字符串或boolean值icon:Icon枚举类型,可选项,指定要在该对话框左侧显示的图标button:Button...原创 2020-04-28 21:05:15 · 5552 阅读 · 2 评论