C语言基础知识(54)
创始人
2024-05-23 00:00:56
0

void 指针

想必大家一定看到过 void 的这些用法:

void func();

int func1(void);

在这些情况下,void 表达的意思就是没有返回值或者参数为空。

但是对于 void 型指针却表示通用指针,可以用来存放任何数据类型的引用。

下面的例子就 是一个 void 指针:

void *ptr;

void 指针最大的用处就是在 C 语言中实现泛型编程,因为任何指针都可以被赋给 void 指针,void 指针也可以被转换回原来的指针类型, 并且这个过程指针实际所指向的地址并不会发生变化。

比如:

int num;

int *pi = #

printf("address of pi: %p\n", pi);

void* pv = pi;

pi = (int*) pv;

printf("address of pi: %p\n", pi);

这两次输出的值都会是一样:

平常可能很少会这样去转换,但是当你用 C 写大型软件或者写一些通用库的时候,一定离不开 void 指针,这是 C 泛型的基石,比如 std 库里的 sort 函数申明是这样的:

void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));

所有关于具体元素类型的地方全部用 void 代替。

void 还可以用来实现 C 语言中的多态,这是一个挺好玩的东西。

不过也有需要注意的,不能对 void 指针解引用

比如:

int num;

void *pv = (void*)#

*pv = 4; // 错误

为什么?

因为解引用的本质就是编译器根据指针所指的类型,然后从指针所指向的内存连续取 N 个字节,然后将这 N 个字节按照指针的类型去解释。

比如 int *型指针,那么这里 N 就是 4,然后按照 int 的编码方式去解释数字。

但是 void,编译器是不知道它到底指向的是 int、double、或者是一个结构体,所以编译器没法对 void 型指针解引用。

算法结构

1、顺序结构、选择结构、循环结构;

2、循环结构又分为while型、do-while型、for循环结构;

3、程序流程图;

结构化程序设计方法

1、自顶向下;

2、逐步细化;

3、模块化设计;

4、结构化编码。

array_name 和 &array_name 有什么区别

为了理解这个问题,让我们举个例子,假设 arris 是一个 5 个元素的整数数组:int arr[5];

如果打印 arr 和 &arr ,那么会发现相同的结果,但两者都有不同的类型。

arr => 数组的名称是指向其第一个元素的指针。 所以这里 arr, split 作为指向整数的指针。

&arr => 它拆分为指向数组的指针,这意味着 &arr 将类似于 int(*)[5];

#includeintmain(){int arr[5]={0};printf("arr= %u\n", arr);printf("&arr= %u\n",&arr);printf("arr+1 = %u\n", arr+1);printf("&arr+1 = %u\n",&arr+1);return0;}C

当编译上面的代码运行时,会发现 arr 和 &arris 相同,但是由于指针类型不同,arr+1 和 &arr+1 的输出会不一样。

自增与自减运算符

自增运算符为++,其功能是使变量的值自增1

自减运算符为--,其功能是使变量值自减1。

它们经常使用在循环中。

赋值运算符

C语言中赋值运算符分为简单赋值运算符和复合赋值运算符

简单赋值运算符=号了,下面讲一下复合赋值运算符:

复合赋值运算符就是在简单赋值符=之前加上其它运算符构成.

注意:复合运算符中运算符和等号之间是不存在空格的。

关系运算符

>=, <=, ==, !=这种符号之间不能存在空格

三目运算符

C语言中的三目运算符:?:,其格式为:

表达式1 ? 表达式2 : 表达式3;

执行过程是:

先判断表达式1的值是否为真,如果是真的话执行表达式2;如果是假的话执行表达式3。

相关内容

热门资讯

中班幼儿爱着急哭个案分析 中班幼儿爱着急哭个案分析 孩子的语言功能发育得还不完善,所以有很多时候不会用正确的语言去表达自己的...
刻骨相思得典故事什么 刻骨相思得典故事什么出自:五代·温庭筠《新添声杨柳枝·二》词:“井底点灯深烛伊,共郎长行莫围棋。玲珑...
且以长情赴此生意思是? 且以长情赴此生意思是?我愿和你一生一世且,是姑且、暂且、那么就的意思有潇洒和决然的意味在里头。以,是...
献文帝处死皇太后情人,为何却能... 献文帝处死皇太后情人,为何却能保命?因为这样他就不怕威胁了,虽然皇太后不是献文帝的亲生母亲,他也要干...
道德素质具体包括哪些方面 道德素质具体包括哪些方面道德底线 你可以不高尚,但是不能无耻。要做到这个要求,就必须遵循一些基本的道...
大学生一万元创业补贴(创业信息... 深圳创业补贴政策2021和深圳大学生创业补贴政策-2021深圳最多可以申请45万的补贴!没申请的话就...
为什么每次遇到喜欢的人就开始自... 为什么每次遇到喜欢的人就开始自卑因为你遇到喜欢的人之后,你会发现他身上有很多优点,然后你没有,你就会...
公安部:中缅泰将全面清剿电诈园... 转自:千龙网新华社北京7月6日电 记者6日从公安部获悉,中国、缅甸、泰国近日召开联合打击电信网络诈骗...
特斯拉2025上半年交付72万... 长江商报消息 ●长江商报记者 黄聪特斯拉(NASDAQ:TSLA)全球销量下滑,在中国市场也不尽如人...
杜丽的人物评价 杜丽的人物评价十年磨一枪,我们不知道这次的失败对杜丽来说意味着什么,但相信人们会记得,在中国的体坛上...