二级指针拷贝
#include <stdio.h> #include <string.h> int main(int argc, char** argv)
{ int maxLen=0; //N = argc; char **ptr = NULL; int i = 0; //============以下程序是为了求出argv[][]数组中最长的串长度,把最长串长度保存在maxLen里 maxLen=strlen(argv[0]); for (i = 1; i < argc; i++) { maxLen = maxLen > strlen(argv[i])?maxLen:strlen(argv[i]); } //maxLen自增,是为了多出一个位置以便存放字符串结束符'\0' maxLen++; //printf("====%d==\n",maxLen); //先申请一个含有argc个char *指针的二级指针空间,然后再给每个ptr[i]指针申请长度为maxLen的指针空间。 ptr = (char **)malloc(sizeof(char *) * argc); for (i = 0; i < argc; i++) { ptr[i] = (char *)malloc(sizeof(char) * maxLen); } //把**argv的内容拷贝到**ptr指向的空间 for (i = 0; i < argc; i++) { strcpy(ptr[i],argv[i]); } for(i = 0; i < argc; i++) { printf("argv[%d]=%s\n",i,argv[i]); } //用完后注意free指针空间 for(i = 0; i < argc; i++) { free(ptr[i]); } free(ptr); ptr = NULL; return 0; }