C语言学习笔记(2)——指针(下)

它的第一个参数是置空内存的首地址,第二个参数写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函数的功能是得到命令行的参数

猜你喜欢

转载自blog.csdn.net/qq_21747841/article/details/78198724