C语言
文章平均质量分 75
zqs656546
这个作者很懒,什么都没留下…
展开
-
数组指针和指针数组、指针函数和函数指针、指针常量、常量指针、函数指针数组
数组指针:指向数组的指针int (*p)[n]“()”的优先级高于“[]”,因此,p和“*”结合,构成一个指针,该指针名为p,int修饰的是数组的内容,即数组的每个元素。也就是说p是个指针,该指针指向具有n个整型的一维数组。int (* arrPtr)[10] = NULL; // 一个指针,它指向一个有10个int元素的数组int matrix[3][10]; // 数组名称是一个指向第一个元素的指针,也就是第一行的指针arrPtr = matrix; .原创 2021-04-29 18:04:44 · 132 阅读 · 0 评论 -
const分析
foo1(const char *p){}foo2(const char **p){}int main(int argc, char **argv){ char *s = NULL; foo1(s); char **t = NULL; foo2(t); return 0;}对于该段代码,在编译的时候会发出警告:warning: passing argument 1 of ‘foo2’ from incompatible pointer .原创 2020-07-01 14:47:36 · 1951 阅读 · 0 评论 -
C语言快速排序算法
快速排序(Quick Sort)使用分治法策略。它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序法的基本精神是在数列中找出适当的轴心,然后将数列一分为二,分别对左边与右边数列进行排序,而影响快速排序法效率的正是轴心的选择。快速排序流程:(1) 从数列中挑出一个基准值。(2) 将所有比基准值小的摆放在基准前面原创 2020-11-10 17:13:11 · 702 阅读 · 0 评论 -
void (*signal(int signo, void (*fun(int))))(int)的理解
*int (p)();这是一个函数指针, p所指向的函数是一个不带任何参数, 并且返回值为int的一个函数.*int (fun())();这个式子与上面式子的区别在于用fun()代替了p,而fun()是一个函数,所以说就可以看成是fun()这个函数执行之后,它的返回值是一个函数指针,这个函数指针(其实就是上面的p)所指向的函数是一个不带任何参数,并且返回值为int的一个函数.**void (signal(int signo, void (fun)(int)))(int);就可以看成是signal(转载 2020-11-05 11:28:09 · 523 阅读 · 0 评论 -
数组随笔
一维数组在C中,在几乎所有使用数组名的表达式中,数组名的值是一个指针常量,也就是数组第一个元素的地址。只有在两种场合下,数组名不用指针常量表示:当数组名作为sizeof操作符或者单目操作符&的操作数时。sizeof返回整个数组的长度,而不是指向数组的指针的长度,去一个数组名的地址所产生的是一个指向数组的指针,而不是一个指向某个指针常量值得指针。int a[10];int b[10];...c = &a[0];表达式&a[0]是一个指向数组第一个元素的指针,和下面这.原创 2020-07-09 11:31:44 · 128 阅读 · 0 评论 -
C语言可变参数函数的理解
可变参数列表时通过宏来实现的,这些宏定义于stdarg.h头文件中,是标准库的一部分,此外还声明了一个类型va_list和三个宏——va_start、va_arg和va_end。可以声明一个类型为va_list的变量,与这几个宏配合使用,访问参数的值。(常见的使用可变参数列表的函数是pirntf和scanf,有时间研究下)例子://计算指定数量的值得平均值#include <stdio.h>#include <stdarg.h>float average(int n_v原创 2020-07-08 10:36:32 · 174 阅读 · 0 评论 -
C语言指针随笔
声明变量:int a = 112, b = -1;float c = 3.14;int *d = &a;float *e = &c;变量d和e声明为指针变量,并用其他变量的地址予以初始化。d和e的内容是地址而不是整型或浮点型数值。从图中可以看出d的内容与a的存储地址一致,而e的内容与c的存储地址一致,这是我们对这两个指针进行初始化时所期望的结果。注意:不能简单的认为由于d和e是指针,所以它们能自动获得存储于位置100和108的值(即112和3.14),因为变量的值就是.原创 2020-07-07 16:28:29 · 166 阅读 · 0 评论 -
C和指针随笔
1.gets函数丢弃换行符,并在该行的末尾存储一个NUL字节。2.NUL是ASCII字符集中’\0’字符的名字,它的字节模式为全0。NULL指一个其值为0的指针。3.数组参数是以引用的形式进行传递的,即是传址调用,而标量和常量则是按值传递的。当数组名作为实参,传给函数的实际上是一个指向数组起始位置的指针,也就是在内存中的地址,正是实际传递的是一个指针而不是一份数组的拷贝,才使得数组名作为参数时具备了传址调用的含义。4.函数void fuction(int array[], int len){};未指定原创 2020-07-02 16:23:09 · 140 阅读 · 0 评论