自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 内存的动态管理

首先:我们之前所掌握的内存开辟方式特点:1

2018-05-29 20:15:23 362

原创 有关自定义类型:结构体、枚举、联合

一、结构体1.概念结构体:是一种聚合类型,可以将不同类型的变量放在一起。数组:也是一种聚合类型,但是将相同类型的变量放在一起。2.结构体声明struct tag{ member-list;}variable-list;tag:是一个标签,名称.  : (1) 见名知意 (2) 可以省略,但不建议省略。member-list:  (1) 可以放任意类型的变量,可以套结构体。 (2) 不可以为空...

2018-05-28 17:16:18 327

原创 关于字符函数和字符串函数

一、strchr char str[] = "this is a sample string"; char *pch; printf("looking for the 's' character in\"%s\"...\n",str); pch = strchr(str, 's'); while (pch!=NULL) { printf("found at %d\n", pch - ...

2018-05-26 20:29:21 289

原创 字符串和字符串函数的总结

一、求字符串长度strlensize_t strlen (const char *str)二、长度不受限制的字符串函数strcpy   (字符串拷贝 默认+'\0')char *strcpy(char *dest,char *src)strcmp (字符串比较,根据ascii码)char *strcmp(char *dest,char *src)strcat  (字符串拼接,覆盖前一个'\0')c...

2018-05-26 19:38:16 251

原创 指针数组相关习题

1.int a[5] = { 1, 2, 3, 4, 5 }; int *ptr = (int*)(&a + 1); //指向了下一个数组的地址 printf("%d %d", *(a + 1), *(ptr - 1));//第二个元素,下一个数组的地址-1(就指向了5)2.int a[4] = { 1, 2, 3, 4 }; int *ptr1 = (int*)(&a ...

2018-05-24 19:38:53 347

原创 关于指针和数组的运算

首先我们要知道:sizeof(数组名),这里的数组名表示整个数组&数组名,这里的数组名表示整个数组下来我们看看一堆练习吧一、printf("%d\n", sizeof(a)); //16 整个数组大小 printf("%d\n", sizeof(a + 0)); //4 首元素的地址 printf("%d\n", sizeof(*a)); //4 第一个元素的大小 ...

2018-05-23 21:12:59 509

原创 关于qsort

我们先说一下回调函数:函数指针是一种类型,他可以定义变量,可以作为函数形参。概念:通过函数指针调用的函数。把函数指针(地址)作为参数传递给另一个函数,当这个指针被用来调其所指向的函数时,我们就称之为回调函数通俗的说就是函数里面在满足一定条件的时候就调用参数里面的函数下面我们也说说qsort:功 能: 使用快速排序例程进行排序原型:void qsort( void *base, size_t num...

2018-05-23 16:50:49 240

原创 再也不用担心算错啦~看看我们实现的计算器吧~(函数指针数组)

#pragma warning(disable:4996)int my_add(int x, int y) //基本方法{ return x + y;}int my_sub(int x, int y){ return x - y;}int my_mul(int x, int y){ return x * y;}int my_div(int x, int y){ if...

2018-05-23 14:39:33 291

原创 指针(2)

之前我们已经知道了指针名代表整个数组的两种情况:1、sizeof(数组名),这里的数组名代表整个数组2、&数组名,这里的数组名代表整个数组

2018-05-22 21:07:53 140

原创 模拟实现strncpy、strncat、strncmp

1..模拟实现strncpy 原型声明:char *strncpy( char *strDest, const char *strSource, size_t count );功能:把strSource所指向的字符串中以strDest地址开始的前n个字节复制到strDest所指的数组中,并返回strDest。这里值得注意的是:此拷贝并不会将'\0'拷到目标字符串中接下来我们自己实现此函数:char...

2018-05-22 19:32:57 245

原创 两个推理题

一、5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一; 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。 首先的判断条件为名次,名次为1—5在通过题目中给的条件进行判断,由于没人说的话只有一半是对的,那么我们让他们一真一假 || 上一假一真 来使...

2018-05-17 21:19:11 453

原创 可变参数列表源码的剖析

我们用main函数来说明。首先我们得知道main函数是有参数的,那么我们就来看看main函数的原型:int main(int argc,int *argv[],char *envp[]){   program-statements}那么我们看到这里有三个参数第一个参数:argc是个整形参数,表示命令行参数的个数(含第一个参数)第二个参数:argv是个字符指针数组,每个元素是一个字符指针,指向一个字...

2018-05-16 21:08:10 231

原创 使用main函数的参数,实现一个整数计算器

程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。 例如:命令行参数输入:test.exe -a 1 2 执行1+2输出3  首先我们知道参数个数为4个,其次在用switch判断为哪种计数int main(int argc, char *argv[]) int ret = 0; if (argc != ...

2018-05-16 20:36:17 320

原创 指针(1)

一、指针:1. 指针就是地址,通过它能够找到以它为地址的内存单元,指针变量是变量,变量里面放的是指针。2. 指针是存放地址才出现的,指针是为了标示一块地址空间3. 指针变量让地址有地方存放,指针让内存的访问更加方便4. 在32位机器上,指针变量的大小为4个字节、在64位机器上,指针变量的大小为8个字节5.指针的类型:type+*的方式6.指针的+-:(指针+1,看起来是+1,其实是+其所指类型的大...

2018-05-16 18:37:15 185

原创 一些c语言的练习(找不同的两个数字,喝汽水)

思想:1.首先进行整体异或,那么得出的结果为两个不同数字异或的结果2.这两个不同数字至少会有一位是不同的,我们设立一个flag从最低位进行寻找,找出第一次出现的不同位的位置3.我们通过flag找出的那个不同位来对整个数组进行分组:一组为flag位为0的,另一位为flag位为1的4.我们对两组分别进行异或,即可找到下面我们来看看具体的代码:void find_data(int arr[], int ...

2018-05-15 20:20:23 799

原创 可变参数的一些练习

一、int average(int n, ...){ va_list arg; //声明一个(char*)va_list类型的arg变量,用于访问参数列表中的未知部分 int i = 0; int sum = 0; va_start(arg, n);//用于初始化,他的第一个参数为变量名,第二个参数为省略号前的有名字参数。初始化就是把arg指向可变参数部分的第一个参数 for (i...

2018-05-15 18:04:13 233

原创 模拟实现一些函数(strlen、strcpy、strcat、strstr、strcmp、memcpy、memmove、strchr)

一、模拟实现strlen1.使用计数器实现int my_strlen(char *p){ int count = 0; while (*p != '\0') { count++; *p++; } return count;}2.使用递归int my_strlen(char *p){ while (*p!='\0') { return 1 + my_strlen(p ...

2018-05-13 17:06:13 370

原创 关于递归

一、.递归方式实现打印一个整数的每一位 在这里printf有两种方法输出:1.符合条件输出2.不符合,跳出上层递归输出注意:printf是右向左依次输出#include<stdio.h>#include<stdlib.h>void print(int n){ if (n > 9) { print(n / 10); } printf("%d ", n ...

2018-05-11 17:24:37 266

原创 函数的调用(栈帧)

一、栈的结构:出栈(pop)、入栈(push)都是从一端进行的,因此栈遵循先入后出的规则二、寄存器:1.通用寄存器:EAX、EBX、ECX、EDX                2.EIP(PC):程序计数器(指向当前正在执行指令的下一条指令的地址)           3.ESP(栈顶)、EBP(栈底):esp和ebp之间就是一个函数的栈帧,这个栈帧的大小就是通过对函数内定义的临时变量所需要的空...

2018-05-11 14:59:04 256

原创 递归和非递归

一、递归和非递归分别实现求第n个斐波那契数斐波那契数:亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列、费波那西数列、费波拿契数、费氏数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波那契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=Fn-1+Fn-2(n>=2,n∈N*),用文字来说,就是斐波那契...

2018-05-09 21:32:37 346

原创 判断一个字符串是否为另外一个字符串旋转之后的字符串。

 例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0. 首先我们先了解两个函数:1.strcat用于将两个char类型链接的函数。函数原型:extern char *strcat(char *dest,char *src);参数:dest 目标数组指针src 源字符串指针返回值:返回指向dest的指针函数功能:把src所指字符串添加到des...

2018-05-09 20:17:20 224

原创 实现一个函数,可以左旋字符串中的k个字符。

例如:ABCD左旋一个字符得到BCDA            ABCD左旋两个字符得到CDAB 方法一:我们用指针来实现,具体程序及解释如下:#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <string.h>void left_remove(c...

2018-05-08 19:38:13 138

原创 深剖内存中的存储

一、我们先看看地址空间:接着我们在linux中写一段代码  来验证上面的存储方式:运行结果:我们可以看到地址是递增的  下来我们再验证堆区和栈区是相对而生:这是一段代码:运行结果:我们可以看到堆区的地址是递增的,栈区是递减的。二、两个关键字:const、volatile我们知道被const修饰的变量不可以被直接修改,可以通过指针的方式进行修改运行结果:可以看到第一次编译的结果为20,但是当我们对程...

2018-05-05 21:03:11 170

原创 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N)

想法:首先我们如果利用循环逐个去找,时间复杂度就会等于0(n);接下来我们看到题目说是这个数组是从左到右递增,从上到下递增,利用行和列我们就会将问题变得简单。举个例子:          上述假若要找的数字大于右上角的数字那么我们就删除右上角数字所在的那一行。假若找不到打印not find,找到了就打印行列号程序如下:结果:...

2018-05-02 22:04:32 307

原创 一个整数数组中,使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。

想法:先判断数组的第一位arr[i]是奇数还是偶数,若为奇数则接着判断第二位,若arr[i]为偶数就将其和最后一位arr[j]进行交换,然后 j--, i--再依次进行判断。下面我们来看看程序吧程序结果图:...

2018-05-01 13:23:27 899

空空如也

空空如也

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

TA关注的人

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