它的第一个参数是置空内存的首地址,第二个参数写0, 第三个是置空的大小,单位字节(sizeof(a)) memcpy 实现第一个参数是目标地址,第二个是源地址,第三个是copy多少内容,单位字节 注意使用过程中假如待拷贝的数组和目标数组类型不同,short int 和int等。会输出如下奇怪
的结果
这里其实是00020001 00040003。。。000被隐藏起来了。可以用%08x让它把000输出 memmove和memcpy用法一样,使用memcpy的时候,一定要确保内存没有重叠区域。内存重叠: memcpy(&a[3],&a[0],20);//copy五个成员(注意不是20个)
char*作为函数的参数: void test(char *a) 和之前的数组是一样的,为了保护字符串a,需要加const strlen那个库函数计算字符串的长度 strlen(const char *a),它不要改字符串的值,所以用const strncat合并两个字符串和strcpy这两个的参数也有一个为const,指向的是源字符串 如果一个数组作为函数的参数,那么数组的成员数量在函数内部是不可见的,解决办法: 在传递一个数组的时候,同时提供另一个参数,标明这个数组有几个成员变量。如果传递的是个字符串,就不用 传递这个参数,因为字符串是0结尾的。
指针数组作为main函数的参数
void print(char *p)//错误
void print(char **p)
for (i=0;i<3;i++)
{ printf("%s\n",p[i]);//p[i]是char *
int main()
{char *a[3];
char a1[]="hello:";
char a3[]="world";
a[1]=a2;
a[2]=a3;
print(a);
returan 0; }
指针数组作为main函数的参数 int main(int argc ,char *args) //argc是一个指针数组char ,argc代表这个数组有多少个成员 系统调用main函数 argc代表命令行参数的数量,程序名字本身就算一个参数!!!一般args[0]代表函数名,main函数是系统调用的,所以main函数的功能是得到命令行的参数