目录:
1.memset,strcpy函数
2.传值和传址的理解
3.输出100-200素数函数实现
4.找数组下标函数实现
1
(1)memset 函数 头文件:(#include<string.h>)
我的理解:原型:void*memset(void*ptr, int value,size_t num); memset的定义 mem就是momory 就是将ptr指向的内存块的第一个num字节设置为指定的值;这里注意 Value 是整形;ptr是Void*型不需要返回的指针变量;三个部分第一部分是我们要开辟的数组;第二个部分 是我们要打印的东西;第三个部分是打印的数量;我们来看看代码实现
我们可以看到“*”将”Hello“代替了
(2) strcpy 函数 头文件(#include<string.h>)
我的理解:原型:char*strcpy(char * destination,const char * source); strcpy的定义 str是string cpy就是copy 意思就是字符串的拷贝;destination-地址是字符类型的,而char*source就是我们要拷贝的东西接下来我们看看代码实现
这里注意我们拷贝是将要拷贝的值全部转换为数组里的这里包括 ‘\0’ 字符结束标志也包括了 其实这里原本是 “ *****\0World "但是当我们读取字符时遇到 ’\0‘ 就会终止程序
2
传值和传址的理解:
在函数调用中我们经常会有不同需求,有些则是需要传地址,有些是需要传数值,在传数值过程并不影响主函数的函数值,而传地址是可以通过形参来改变主函数的数值 例子:
用一个函数交换两个数的值:
通常我们第一想法都会直接在调用的函数里直接修改,但是我们会发现这个输出结果是错误的我们来看看代码
我们可以看到代码的A,B并没有改变,这是为什么呢,这是因为我们在调用函数的过程中形参新建了一个存储空间就是说x,y单独开辟了一个空间,而与a,b的空间并不一样,而我们在形参里确实实现了数值的交换,但是回到主函数中我们的a,b空间位置与原来的一样,所以a,b的值并没有改变,因此我们既然要改变这两个数的值,我们必须从它的存储位置下手,我们知道指针是可以指向一个变量的存储空间,所以从指针下手,定义一个两个指针指向a,b,形参也是地址形式,在调用的函数实现地址交换即实现值交换,代码如下
3
素数的判断条件我们就不用多说啦(在我3.29里有实现素数的三种方法),首先我们来整体看代码(这里多了一个string.h的头文件 这是在我下面有别的代码为了方便加上的 ,此题中没有)
4
数组中函数实现我们一样用二分法实现(二分法也在3.29中详细讲过)我们直接来看代码
这是调用函数
主函数