模拟实现内存比较函数memcmp: 该函数与strcmp有相似之处,都可用于字符串比较是否相同,若相同,则返回0值。若前者大于后者,则返回大于0的整型值,否则返回小于0的整型值。 区别在于: strcmp只能比较字符串,memcmp是内存比较函数,原则上是比较内存的,但其实真正实现时并不是所有都可以比较,例如float,但我们至少可以比较字符串以及int型。而对于strcmp,strncmp的比较:str1, str2 为需要比较的两个字符串,n为要...
当然下面列出来的几点都是C的基础用法,只不过是这些用法可能平时不会被注意。所以很多东西第一次看到的时候,可能会觉得很怪异,但是细细想想就能很好的理解,也就能更好的清楚C语言的一些特性。但是在具体的编码过程当中,我还是希望都能老老实实规规矩矩的。因为程序员不需要太多棱角,把代码写得规范整洁比耍小聪明要重要得多。下面我列举了5个例子说明一些问题,如果你是老手看到这些就一笑而过吧,如果是新手,我相信还是会得...
1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
我在这想看到几件事情:
1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)
2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。
3). 意识到这个表达式将使一个16位机的整型数溢出-因此要...
比较strncpy与strcpy区别: 两者均为字符串拷贝函数,用于拷贝字符串。但strcpy比较时找字符串结束标志‘\0’,一旦找到 ‘\0’,比较结束。而后者我们可以根据实际情况完成指定长度n的字符串比拷贝,因此函数strcpy里面多了一个字母n,即strncpy.由此,从此处看strncpy比strcpy功能强大一点。 关于strcpy可以查看我的博客链接:http://10740184.blog.51cto.com/10730184/1714516 strncpy代码如下:#define _CRT_SECU...
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
int int_computer(int num1, char *p, int num2)
{
if (p == "-a")
return num1 + num2;
else if (p == "-s")
return num1 - num2;
else if (p == "-m")
return num1 * num2;
else if (p == "-d")
return num1 / num2;
else
return -1;
}
int main(int argc,int argv)
{
char a;
char *p = &a;
int num1 = 0;
int...
#include <stdio.h>
int main()
{ int A,B,C,D,E;
for( A=1; A<=5; A++)
{
for( B=1; B<=5; B++)
{
for( C=1; C<=5; C++)
{
for( D=1; D<=5; D++)
{
for( E=1; E<=5; E++)
{
if( (B==1) + (A==3) ==1 &&
...
在分析指针的代码时,脑子里一定要有一张内存的分配图,用于分析各个变量的存储情况。 1、用变量a给出下面的定义
a) 一个整型数(An integer)
b)一个指向整型数的指针( A pointer to an integer)
c)一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an intege)r
d)一个有10个整型数的数组( An array of 10 integers)
e) 一个有10个指针的数组,该指针是指向一个整型数的。(An array of 10 ...
前言:为啥叫C语言程序猿必会呢?因为特别重要,学习C语言不知道内存分区,对很多问题你很难解释,如经典的:传值传地址,前者不能改变实参,后者可以,知道为什么?还有经典面试题如下: #include <stdio.h>
#include <stdlib.h>#include <stdlib.h>
void getmemory(char *p)
{
p=(char *) malloc(100);
}
int main( )
{
char *str=NULL;
getmemory(str);
strcpy(str,"hello world");
printf("%s/n",str);
free(str);
return 0;
...
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>int my_strcmp1(const char *dest,const char *src)//方法1
{
assert(dest);
assert(src);
while (*dest==*src)
{
if (*dest == ‘\0‘)
{
return 0;
}
dest++;
src++;
}
return *dest - *src;
}
int my_strcmp2(const char *dest, const char *src)//方法2
{
int ret = 0;
whil...
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>char *my_strcat(char *dest, const char *src)
{
assert(dest);
assert(src);
char *ret = dest;
while (*dest)
{
dest++;
}
while (*dest++ = *src++)
{
;
}
return ret;
}int main()
{
char arr3[20] = "welcome ";
char arr4[20] = "to bit!";
char *ret=my_strcat(arr3, arr4);
printf(...
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
char *my_strcpy(char *dest, const char *src)
{
assert(dest);
assert(src);
char *ret = dest;
while (*dest++ = *src++)
{
;
}
return ret;
}int main()
{
char arr1[] = "welcome to bit!";
char arr2[20];
char *ret = my_strcpy(arr2, arr1);
printf("%s", ret);
system("pause");
return 0;
}【...
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
void *my_memcpy(void *p1,const void *p2, size_t count)
{
assert(p1);
assert(p2);
char *dest = (char*)p1;
char *src = (char*)p2;
while (count--)
{
*dest++ = *src++;
}
return p1;
}int main()
{
float arr1[160];
float arr2[10] = {1.0,2.0};
size_t count = sizeof(arr2)*(sizeof(arr2) / sizeo...
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>void *my_memmove(void *p1, const void *p2, size_t count)
{
assert(p1);
assert(p2);
char *dest = (char*)p1;
char *src = (char*)p2;
dest = dest + 16;
src = src + 8;
if ((src <= dest) && (dest <= (src + count)))
{
while (count--)
{
*(dest + count) = *(src + count);
}
}
...
本文是我2021年考研时准备的复试面试题,现在拿出来给大家分享一下
觉得好的点个赞哦,毕竟当初我也是整理了好久,改了好几次版本呢
祝大家都上岸!!!!
P.S. 我当初整理的时候是word,直接复制过来的话代码不会自动变成CSDN的代码块,所以代码我是一段一段重新标记为CSDN代码段的,这样大家看起来舒服点
C语言基础 目录
1、static关键字的作用 2
2、C++和C的区别 2
3、Java的方法重载 2
4、重写和重载 2
5、面向对象编程 3
6、c...