C语言
文章平均质量分 89
向着五星的方向
阿里云专家博主,华为云云享专家,专注于Java全栈,大数据方向,欢迎大家三连,有事可以私聊!
展开
-
经常容易混淆的指针概念以及特殊指针
所以 q[0]指针变量的地址,是 int **类型的。是个函数指针变量,存放函数的地址,它指向的函数, 必须有一个 int 型的返回值,没有参数。它的返回值是 s 指向的内存的首地址,可能是不同类型的地址。注意:void*类型的指针变量,也是个指针变量,在 32 为系统下,占 4 个字节。void* 通用指针,任何类型的地址都可以给 void*类型的指针变量赋值。分析:q 是指针数组的名字,是指针数组的首地址,是 q[0]的地址。它是个函数的声明,声明的这个函数返回值为 int *类型的。原创 2023-07-17 20:54:55 · 72 阅读 · 1 评论 -
C语言函数和指针的关系之三(完结)
定义了一个函数指针数组,数组名是 p,有 5 个元素 p[0] ~p[4],每个元素都是函数指针变量, 每个函数指针变量指向的函数,必须有整型的返回值,两个整型参数。c 语言规定:函数的名字就是函数的首地址,即函数的入口地址 咱们就可以定义一个指针变量,来存放函数的地址。比如 Linux 系统中创建多线程的函数,它有个参数就是函数指针,接收线程函数的入口地址,即创建线程 成功后,新的任务执行线程函数。1、函数指针的概念: 咱们定义的函数,在运行程序的时候,会将函数的指令加载到内存 的代码段。原创 2023-07-16 21:25:21 · 51 阅读 · 1 评论 -
C语言之数组指针
回顾: 数组的名字是数组的首地址,是第 0 个元素的地址,是个常量,数组名字加 1 指向下个元素 二维数组 a 中 ,a+1 指向下个元素,即下一个一维数组,即下一行。a 是数组的名字,是 a[0]的地址,p=a 即 p 保存了 a[0]的地址,即 a 和 p 都指向 a[0],所以在引用数组 元素的时候,a 和 p 等价。a+1 跳一个整型元素,是 a[1]的地址 a 和 a+1 相差一个元素,4 个字节 &a 就变成了一个一维数组指针,是 int(*p)[10]类型的。二维数组,有行,有列。原创 2023-07-13 21:45:46 · 255 阅读 · 1 评论 -
C语言之指针(指针数组以及指针的指针和字符串)
当指针指向文字常量区的时候,不能通过指针修改文字常量区的内容。str 指向文字常量区的时候,内存里的内容不可修改 str 指向数组(非 const 修饰)、堆区的时候,它指向内存的内容是可以修改。则 p 中存放的是 a 的地址编号即 0x00002000 因为 p 也占 4 个自己内存,也有它自己的地址编号,及指针变量的地址,即指针的指针。假如:指针变量 p 的地址编号是 0x00003000,这个地址编号就是指针的地址 我们定义一个变量存放 p 的地址编号,这个变量就是指针的指针。int * p[5];原创 2023-07-12 23:32:06 · 170 阅读 · 1 评论 -
C语言之指针(未完待续)
1.简单的指针变量 数据类型 * 指针变量名;int * p;//定义了一个指针变量 p 在 定义指针变量的时候 * 是用来修饰变量的,说明变量 p 是个指针变量。变量名是 p2.关于指针的运算符 & 取地址 、 *取值例 1:int *p;//在定义指针变量的时候*代表修饰的意思,修饰 p 是个指针变量。p=&a;//把 a 的地址给 p 赋值 ,&是取地址符p 保存了 a 的地址,也可以说 p 指向了 a。原创 2023-07-07 21:32:28 · 58 阅读 · 1 评论 -
C语言之预处理,动态库,静态库
带参函数,代码只有一份,存在代码段,调用的时候去代码段取指令,调用的时候要,压栈弹栈。因为 include 包含的文件会在预编译被展开,如果一个.c 被包含多次,展开多次,会导致函数重复定义。注意和 if else 语句的区别,if else 语句都会被编译,通过条件选择性执行代码 而 选择性编译,只有一块代码被编译.编译通过,运行时出错,编译时找到了库函数,但链接时找不到库,执行以下操作,把当前目录加入 搜索路径。1:使用的库文件的格式不一样 动态编译使用动态库,静态编译使用静态库。原创 2023-07-06 10:21:22 · 90 阅读 · 3 评论 -
C语言之数组详解
定义一个数组,在内存里分配空间格式:数据类型 数组名 [数组元素个数];int a [10];char b [5];定义了 5 个 char 类型变量的数组 b5 个变量分别为 b[0] ,b[1],b[2],b[3],b[4];在数组定义的时候可以不给出数组元素的个数,根据初始化的个数来定数组的大小例 1:return 0;格式: 数据类型 数组名 [行的个数] [列的个数];原创 2023-07-05 11:30:33 · 325 阅读 · 1 评论 -
C语言之控制语句的详解
if else 语句的作用是,如果 if 的条件成立,执行 if 后面{}内的语句,否则执行 else 后的语句。在判断的时候,从上往下判断,一旦有成立的表达式,执行对应的复合语句, 下边的就不再判断了,各个条件判断是互斥的。} 第一次进入循环的时候执行表达式 1,表达式 1 只干一次, 表达式 2,是循环的条件,进入 while 循环的时候,首先会判断条件表达式是否为真,为真进入循环体,否则退出循环。先执行循环体里的代码,然后去判断条件表达式是否为真,为真再次执行循环体,否则退出循环。原创 2023-07-04 15:05:01 · 209 阅读 · 1 评论 -
C语言之运算符的详解
在计算机中,正数是直接用原码表示的,如单字节 5,在计算机中就表示为:0000 0101。2、算数右移 高位补符号位,低位溢出 (有符号数) 注:对无符号数来说,高位补 0,低位溢出 对有符号数来说,高位补符号位,低位溢出.1、逻辑右移 高位补 0,低位溢出 注:无论是有符号数还是无符号数都是高位补 0,低位溢出 .前边的表达式成立,整个表达式的值,是?和:之间的表达式的结果 否则是:之后的表达式的结果。运算符在变量的后面,在当前表达式中先用 i 的值,下条语句的时候 i 的值改变。原创 2023-07-04 15:00:14 · 567 阅读 · 1 评论 -
C语言数据类型类型及语句(各种详细的细节以及基础+持续更新中)
char ch='a' =是赋值号//正确 用单引号引起单个字符正确,引起多个字符错误.char ch2='1234' //错误int a=10;void不能用来定义变量,没有void类型的变量.void是用来修饰函数的参数或者返回值,代表函数没有参数或者没有返回值.//代表fun函数没有返回值,fun函数没有参数.原创 2023-07-03 09:27:35 · 529 阅读 · 0 评论