自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 收藏
  • 关注

原创 Java Web笔记 day2 script vue

Javascript 与 vue 入门

2025-01-03 11:11:39 762

原创 预处理相关理解

宏定义的相关应用

2024-10-12 13:15:58 1054

原创 C语言文件存储

C语言文件读取章节

2024-10-10 12:43:39 961

原创 动态内存分配

动态内存使用

2024-10-07 12:19:29 635

原创 自定义类型

结构体 枚举 联合体

2024-10-03 12:30:08 482

原创 <string.h>的学习

strlen函数,strcmp函数,strcpy函数,strcat函数等

2024-09-26 12:00:37 299

原创 常见代码试题

程序设计题

2024-09-19 12:42:02 962

原创 关于数组与指针的元素大小得例题

关于在C语言中,指针与数组的存储地址与大小

2024-09-17 12:14:01 500

原创 用sizeof计算二维数组大小的辨析{建议去编译器上看}

用sizeof计算二位数组大小的辨析

2024-09-17 10:21:14 487

原创 sizeof()与strlen()表示元素大小的辨析

用sizeof()与strlen()表示元素大小的辨析

2024-09-15 12:26:15 506

原创 模仿qsort()函数

模仿qsort()函数练习

2024-09-15 11:48:58 549

原创 理解运用qsort()函数的使用

/用strcmp(e1,e2)函数来比较,其e1>e2返回值>0;e2

2024-09-14 13:50:28 480

原创 理解void*的用法

解引用赋值是不合法的,因为 void* 类型的pppa,并不确定访问字节个数,所以是错的。//Warning:'char *' 与 'int *' 不相容。

2024-09-14 13:48:09 148

原创 小结:指针数组,数组指针,函数指针,函数指针的数组,指向函数指针数组的指针

/或者将上边语句改为int*(*pa)[10] = &arr;//另一种赋值方式是 错误的!//将pArt赋值给ppAet。

2024-09-13 12:41:20 691

原创 理解函数指针、数组的关系

/pfArr是函数指针数组,所以用指向 (函数指针数组) 的 (指针) 指向 (这个数组) 即 函数指针数组的指针。//int (*pfArr[4](int,int))是含int类型的参数的返回值为int类型的函数指针数组。//int(*pf)(int,int)是含int类型的参数的返回值为int类型的函数指针。//(*pfArr[4])(int,int)是int类型的有参函数的指针数组。//(*pf)(int,int)是指针指向有参函数的指针。//*pfArr[4]是指针数组。//(*pf)是指针。

2024-09-13 12:37:06 231

原创 回调函数的运用

/参数 p 是一个函数指针,指向的函数类型是 void (*)(char*),//printf()与%s联合在一起,会将指针指向的每一个元素输出。//定义了一个名为 test 的函数,它接受一个参数 p。printf("退出");//这意味着 p 指向的函数没有返回值(void),//并且接受一个 char* 类型的参数。//通过p传递过去字符串的首地址。//建造回调函数,通过地址再调用函数。//就是通过一个函数指针调用的函数。//运用函数指针数组编写计算器。//例2.用计算器为例。

2024-09-13 12:35:57 473

原创 运用函数指针数组编写计算器 {计算器编写应用}

/ 在定义这个指针数组指向有两个参数类型为int的函数 即(*pArr[])(int,int)// 返回值为int类型的函数指针数组 即int(*pArr[])(int,int)// []优先级高与 * ,所以pArr[]是数组 即pArr[]//通过pArr[input](x,y)调用函数。else if(input == 0) //0退出系统。//通过pArr[input]找到元素地址。// 在与 * 结合,变为指针数组 即*pArr[]//通过地址调用函数。//函数指针数组定义。

2024-09-12 13:23:13 532

原创 函数指针的数组的辨析{直接上案例}

/Add可以替换为 Add || Sub || Mul || Div。//错误,同样是语法错误,应将 写为 int(*parr3[10])();//错误,语法错误,[10]先于()结合,不符合语法定义。i++)//输出 5 -1 6 0。//函数指针数组——指向多个函数。//函数指针——指向单个函数。//识别下列数组是否正确。

2024-09-12 13:22:19 540

原创 (*(void(*)())0)();与void (*signal(int,void(*)(int)))(int);分析

/void(*signal(int,void(*)(int)))(int)代表signal函数指针的函数的参数是int,返回类型是void。//// 【注】 *signal(int,void(*)(int))代表对函数指针的解引用,error。//(void(*)())0代表将0的类型强制转换为void(*)()函数指针类型,即为一个地址。//(*(void(*)())0)()代表调用0地址处无参函数返回值类型为void的函数。//*(void(*)()0)代表对0解引用找到函数内容。

2024-09-12 13:20:33 449

原创 函数指针定义及传参

/(*pa)指向(int x,int y)函数,即(*pa)(int x,int y)//因为Add是地址,所以用*pa是指向函数参数的地址的指针,即(*pa)//以上3种方法输出结果相同,其中第3种与第2种写法相同,*号可不用写。//返回值是int类型,即int(*pa)(int x,int y)printf("%d\n",(*pa)(3,2));//查看Add函数的地址(子函数一定要在主函数的上方)

2024-09-11 11:57:11 294

原创 二维数组与一级指针的传参

/正确表达:我们(*arr)代表指向一维数组,是指针,(*arr)[5]代表指针(*arr)指向5个元素,int (*arr)[5] 代表指针(*arr)指向5个元素的类型是int。// void test(int* *arr)这种写法也是错误的,从主函数传过来的是一个一维数组,子函数用一个二级指针接收,但二级指针是用来存放一级指针的,error。//答:常见的错误示范:void test(int *arr)这种写法是错误的,*arr代表首地址,而二维数组的首地址是一个一维数组的地址,error。

2024-09-11 11:04:49 189

原创 二级指针与一维数组的传参

/**p是存放一个指向一级指针的地址,一级指针可以指向数组,地址进行回代。//二级指针与一维数组的传参。//以下三种传值都是正确的。

2024-09-11 11:04:04 140

原创 一维数组与一级指针传参及数组传参与指针数组的传参{建议在编译器看}

void test2(int *arr2[]) //void test2(int* *arr2)一级指针地址放入二级指针中。//数组传参,输出1 2 3 4 5。//指针传参,输出1 2 3 4 5。//一级数组传参的两种形式。// 数组传参与指针数组的传参。//一维数组与一级指针传参。

2024-09-11 10:44:46 268

原创 理解char类型的指针指向字符串

/其次,当使用%s时,用printf()函数打印字符串时,会从给定的地址(默认从开头)开始读取字符,直到遇到空字符(\0)才会停止。//由输出结果与检查内存证明确实是字符中a的地址。//输出为:abcdef。//了解%s的作用,其作用是打印字符串,这个都明白。//本题代表着指针p2指向字符串的首地址即a的地址。//这里为什么用const定义char*?//所以,均会输出abcdef。//理解char类型的指针指向字符串。//本体还有一个知识点。

2024-09-10 11:22:45 305

原创 指针与数组得描述与辨析(1)

/parr2是一个指针,因为()的优先级高于[],所以先于指针结合,数组内由10个元素,每个元素类型是int,所以parr2是数组指针。//parr3是一个数组,该数组有10个元素,每个元素是一个数组指针,该数组指针指向数组有5个元素,每个元素是int类型。//parr1是一个数组,因为[]的优先级高于*,所以先于数组结合,每个元素又是int*类型,所以parr1是指针数组。int arr[5];//arr是5个元素的整型数组。//指针与数组得描述。

2024-09-10 11:03:33 224

原创 数组与指针的相互表示

void print2(int (*p)[5], int x, int y) //arr是二位数组的首元素是{1,2,3,4,5}的地址即(*p)[5]//从主函数得出结论(pa + i) == arr[i] == *(pa+i) == pa[i] 都指向同一地址。// //综上 (pa + i) == arr[i] == *(pa+i) == pa[i] 都指向同一地址。// //*(pa+i)+j代表i行j列的元素。//(*(p+i))代表一行的全部地址。

2024-09-10 10:01:37 1102

原创 数组的传参过程中,与指针的混用

void print2(int (*p)[5], int x, int y) //arr是二位数组的首元素是{1,2,3,4,5}的地址即(*p)[5]//*(*(p+i)+j)代表一行一个元素地址的解引用,即地址的存放内容。//arr是首元素地址,即{1,2,3,4,5}的地址。//*(p+i)+j代表一行的每个元素的首地址。//(*(p+i))[j]代表一行的某个元素。//(*(p+i))代表一行的全部地址。//*(p+i)代表一行的首地址。//*(p+i)代表一行的首地址。

2024-09-09 12:18:06 301

原创 数组指针的定义(是指针)

/答:先写逻辑,&arr代表的是取整个数组的地址,&arr由char* arr[5]定义,含义为 char[5]的数组的类型是指针,简称:数组指针。//答:先写逻辑,&arr2代表int[10]的数组的地址,因为是数组指针,所以(*pp)代表是指针,存取的是数组[10],所以(*pp)[10]//然而,&arr是char*类型,是指针,所以用char*定义指针数组(*pa)[5],即char* (*pa)[5]// 答案为:char* (*pa)[5] = &arr;//数组指针 -- 指针。

2024-09-09 11:24:10 254

原创 指针数组的运用(是数组)

/ 加上解引用从操作符*,即*(parr[i]+j)为每一行每一列的数组内容。//答:我们用i控制行数,用j控制列数,parr[i]打印出每个数组的首地址,// 所以我们用一个数组指针存放进数组中,数组指针存放的是 数组的地址。//答:先写逻辑,我们知道数组内存放的是数组,那么数组指针内存放的是指针。//用指针数组的方式,打印出arr1 ,arr2 ,arr3 数组内容。// parr[i]+j则是遍历每一行的数组的每一列的数组地址。// 我们运用循环的方式,将数组打印出来。

2024-09-09 10:29:38 377

原创 数组的指针的地址与指针指向字符串

/答:我们知道要想输出hehe就得让他们的指向的内容相同,加上解引用操作符使指向相应的内容相同,即可输出hehe,即if(*arr1 == *arr2)//答:arr1 == arr2,说的是数组指针地址是否相同,而不是数组的头指针指向的内容是否相同,显然并不相同,所以输出haha。// 其实不然,你要看清楚,是p1,p2指向abcdef的首地址,他们两个指向的位置是相同的,我们可以将abcdef剥离出来。//结合上一个问题,我们这个程序,为什么会输出hehe。//数组的指针的地址问题。

2024-09-08 12:08:34 181

原创 指针指向数组的输出

/其次,当使用%s时,用printf()函数打印字符串时,会从给定的地址(默认从开头)开始读取字符,直到遇到空字符(\0)才会停止。//这里的arr[]实际上存在 a b c d e f \0。//首先,我们先了解%s的作用,其作用是打印字符串,这个都明白。//判断下列代码输出情况,为什么均会输出 abcdef。// 以上输出均是 abcdef。//所以,均会输出abcdef。//指针指向数组的输出。

2024-09-08 12:06:46 377

原创 浮点数的数据存储

/整数原补反 0000 0000 0000 0000 0000 0000 0000 1001。//浮点数在内存中的数据存储。

2024-09-08 12:05:32 202

原创 计算无符号与有符号的char和int类型的数值计算

/ //所以应该存放是的-1 -2 -3 -4 ... -128 1 2 3 4 ... 126 127 \0。////所以应该存放是的-1 -2 -3 -4 ... -128 1 2 3 4 ... 126 127 \0。////按照常规思路:a[i]里边应该存放的是:-1 -2 -3 -4 -5 ... -998 -999。////结果:1111 1111 1111 1111 1111 1111 1111 0110 --补码。////转换为十进制:补码-1取反 --> 原码 --> 十进制。

2024-09-06 11:13:01 395

原创 用代码检测电脑是大端存储,还是小端存储

/先取i的地址,我们找的是存储在内存块的第一个字节,所以用char*进行强转(char*是吃一个字节),// 之后,加上解引用操作符,找到对应地址的数据,返回主函数,与20本身进行比较。//本题仅用于测试 电脑是大端还是小端存储,当测试数据超出一定范围,测试结果将不正确。//由 a = 20 举例 小端 14 00 00 00。// 内存显示 大端 00 00 00 14。//思路:先写逻辑,由于小端是 从低地址->高地址存储。//用代码检测电脑是大端存储,还是小端存储。

2024-09-05 22:43:37 328

原创 const 限制指针的使用

const 修饰指针,变量

2024-09-05 22:42:58 411

原创 字符串拷贝

/void my_stycpy(char* arr1,const char* arr2) //优化以上函数传值 目的:如果你函数传值传错了,会直接报错。//将指针分别指向两数组第一个地址,进行替换,当arr2的指针=='\0',停止,然后,将'\0'赋到下一个位置即可。//思路:先写逻辑,将字符串拷贝另一个数组中,

2024-09-05 22:42:21 220

原创 这是一个死循环的问题

/答:因为 int i;与int arr[5] 是存放在栈区的(默认使用高低地址调用后低地址),即先调用i后arr[],//针对以上情况,在不严谨的情况下,可以交换int arr[5];的定义循环,从而解决死循环问题。//当 循环溢出时(&i==&arr[i]),i被重置为0 ,数组重新从0开始循环,造成死循环。

2024-09-05 22:41:49 226

原创 结构体嵌套

struct Stu s = {"雄安", {"男","女"},12,"123456"};

2024-09-05 22:39:48 121

原创 递归实现 n 的 k 次方

/思路:先写逻辑,实际上 n * n^(k - 1),来实现递归。else if(k < 0) //指数小于0。if(k == 0) //指数为0。else //指数大于0。//递归实现 n 的 k 次方。

2024-09-05 22:39:04 227

原创 写递归函数,输入一个非负整数,返回组成他的数字之和

/写递归函数,输入一个非负整数,返回组成他的数字之和 例:输入1111 输出4。//思路:先写逻辑,将传入的值,当值>9时,即两位数,让其 /10 后 %10。

2024-09-05 22:38:18 265

计算机三级数据库E-R图

计算机三级数据库E-R图

2024-02-05

计算机三级数据库技术选择题

计算机三级数据库技术选择题

2024-01-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除