![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 63
pawnsir
这个作者很懒,什么都没留下…
展开
-
二维数组传递参数
先开始写这个小程序的时候我直接传递的是一个二维指针,然后发现编译跟链接都没有问题,但是运行的时候报了内存错误,经过查询才知道二维数组传参不能直接用二维指针定义 二维数组传递参数一般有三种方法 1.直接传递二维数组如“int a[][10]”(必须标注数组第二维的值)。 2.二维数组第一维用指针代替“int (*a)[3]”。 3.直接传递过去一个一维原创 2016-05-28 18:34:42 · 2071 阅读 · 0 评论 -
C语言中的函数指针
1. 函数指针的定义顾名思义,函数指针就是函数的指针。它是一个指针,指向一个函数。2.函数指针的使用我们定义了一个函数指针,但如何来使用它呢?先看如下例:#include #include char * fun(char * p1, char * p2){ int i = 0; i = strcmp( p1, p2 ); if (0 ==原创 2016-05-28 18:36:07 · 201 阅读 · 0 评论 -
【C语言位运算的应用】如何按bit位翻转一个无符号整型
其实现思路如下: 将目标数值进行末尾比特位摘取,将所摘取的bit位放到一个相同类型的末尾,目标数值bit位右移,相同类型bit位左移。 C语言的位运算符:650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/7C/DF/wKiom1bZndLRecyCAABFU9abgvw125.png" title="]ERO@L4PFP原创 2016-05-28 18:35:53 · 3930 阅读 · 0 评论 -
C语言用结构体写一个通讯录
今天写了个通讯录,给大家看一下#define _CRT_SECURE_NO_WARNINGS 1#include #include #include extern meau();//目录函数就没写出来了,大家可以自己写一下typedef struct T//定义一个结构体{char name[10];char sex[4];int age;char tetl[13];char原创 2016-05-28 18:35:18 · 1918 阅读 · 1 评论 -
C语言模拟实现memset.memcmp函数
之前我们实现了memmove、memcpy函数进行内存拷贝,仅限我们实现memset与memcmp函数进行内存初始化和内存比较的功能。 memset(void*,int,size_t)其功能试讲传递进来的类型用整形来初始化n个单位,核心也是对强制类型转换的理解与运用,代码如下:void*my_memset(void*str, int set, size_t count){assert(s原创 2016-05-28 18:35:16 · 512 阅读 · 0 评论 -
模拟实现C语言strncpy.strncat.strncmp函数
在C语言string这个库中的strcpy,strcat,strcmp这三个函数是通过传递数组的内容来限制它们的,这样做并不是一个好方法,所以新增了strncpy,strncat,strncmp这三个函数,用传参的方式现实字符串的改变长度,模拟实现如下:strncpy函数:char* my_strncpy(char*dest, const char*src, int n){assert(des原创 2016-05-28 18:35:13 · 1421 阅读 · 0 评论 -
指针与数组的关联3 --声明
当我们在调用函数时,传递数组,就是把数组首元素的地址传递给函数,本质也就是给函数传递了一个指针变量。这时候我们会想那么数组是不是跟指针是一样的。为了验证,我们可以给一个项目里创建一个新的源文件,里面创建一个指针变量和是个数组,然后在另一个文件中用数组的方法声明指针,在用指针的方法声明这个数组进行调试,看下结果会如何。 我们创建一个test.c文件用来编写主函数,test1.c创建变量编写内容原创 2016-05-28 18:35:10 · 377 阅读 · 0 评论 -
C语言中指针与函数的关联2(数组的降级)
上一篇讲过数组名发生降级的问题,说的还不够详细,这里我们给一份代码int main(){int arr[10] = { 0 };int *p1 = (&arr)+1;int *p2 = arr + 1;return 0;} 然后我们进入调试,监视变量p1,p2,让程序走起来,监视结果如下:650) this.width=650;" src="http://s2.51cto.com原创 2016-05-28 18:35:07 · 449 阅读 · 0 评论 -
C语言中的指针与数组的关联1
在C语言中,指针是一种类型,存放的是地址,例如char*p,这里p存放的是字符型数据的地址,int*p,p存放的是整形数据的地址,我们可以通过解运用*来获取该地址所指向的内容。而数组则是一种数据类型的集合,如int arr[]={1,2,3,4,5,6,7,8,9,10};这里声明与定义了一个整形数组,而char arr[]="hello world";则是声明与定义了一个字符类型的数组,这个数组原创 2016-05-28 18:35:04 · 299 阅读 · 0 评论 -
C语言模拟实现memcpy,memmove函数
这里memcpy与memmove函数的模拟实现,需要用到空指针来传递参数,之后强制类型转换为char型,用size_t这个宏接受偏移量进行偏移,模拟实现如下: memcpy函数:void* my_memcpy(void*dst,const void*src ,size_t count){assert(dst);assert(src);void* ret = dst;while (c原创 2016-05-28 18:35:01 · 316 阅读 · 0 评论 -
C语言中模拟实现strcpy,strstr,strcat函数
在C中,要模拟实现这几个库函数,是对指针的传参与函数的调用的考察,代码如下,仅供参考 strcpy函数:#include char* my_strcpy(char* dest, const char* src){assert(dest);//断言指针的有效性assert(src);char*pa = dest;while (*dest++ = *src++);return p原创 2016-05-28 18:34:59 · 295 阅读 · 0 评论 -
一个数组中所有的数都是成对出现的只有一个或者两个数字是单独的,求这个数
如果只有一个数,那么我们可以用按位亦或(^)来得到,代码如下:#includeint main(){int arr[] = { 1, 1, 2, 2, 3, 3, 4 };int size = sizeof(arr) / sizeof(int);int num = 0;for (int i = 0; i < size; i++){num ^= arr[i];}printf("%原创 2016-05-28 18:34:56 · 1274 阅读 · 0 评论 -
C语言实现数组的奇偶排序
今天遇到了个实现数组的奇偶排序的问题,与大家分享下解决思路。 思路1:创建新的数组对所求数组进行遍历,技术放在一起偶数放在一起,再用穿件数组中的内容替换到所求数组中,代码如下:#define LEN 10#include#includeint main(){int arr[LEN] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };//数组的初始化int od原创 2016-05-28 18:34:53 · 5895 阅读 · 0 评论 -
c语言不定参数与printf函数的实现
今天学习了C语言不定参数,C语言中的不定参数主要靠这个头文件实现,这个头文件包含了va_list()、va_start()、va_end()三个宏,其用法为先声明一个va_list类型的变量,它用于访问参数列表未确定的部分。这个变量是由va_start来初始化的。它的第一个参数是va_list的变量名,第二个参数是省略号前最后一个有名字的参数。初始化过程把va_list的变量设置为指向可变参数的第原创 2016-05-28 18:34:51 · 4276 阅读 · 0 评论 -
递归调用实例分析2.在函数中间的递归与在函数尾部的递归
上一篇最后给出了用递归完成字符串逆置的代码,但是没有分析它的具体算法,今天做了如'abcde'字符串递归翻转的图跟大家分享(画的比较烂,具体思路还是有的,详情见附件) 这里的递归调用没有出现在函数末尾,二前面几个递归都出现在函数末尾,所以说递归可以分为在函数末尾的递归与在函数中的递归。其差别如下。 1.在函数尾部的递归,都可以用循环的方式做下去,这样的递归大多数情况只能造成代码原创 2016-05-28 18:34:48 · 1247 阅读 · 0 评论 -
递归调用的实例讲解
今天学习了C语言的递归调用,跟大家分享下心得例一:编写一个函数实现n^k,使用递归实现我第一次编写的代码如下(其实是抄的)int my_pow(int n, int k) {int sum;if (k == 0){sum = 1;}else{sum = n*my_pow(n, k - 1);}return sum;} 然后我仔细研究发现,可以不需要else原创 2016-05-28 18:34:45 · 521 阅读 · 2 评论 -
【剑指offer】字符串的空格替换
如何将字符串we are happy中的空格替换成we%20are%20happy这样的字符串,其主要思想是遍历一次字符串,确定空格字符的个数,然后通过空格字符的个数确定目的字符串的长度,1个空格被替换成3个字符,故,空格的个数*2+源字符串的长度+1就是新字符串的长度,之后就是拷贝与替换操作了。用两个指针分别指向新字符串和原字符串的起始位置,若没有空格则执行类似strcpy的操作,若有空格则让新原创 2016-07-05 18:01:01 · 345 阅读 · 0 评论