#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;
}
分享到:
相关推荐
### 二级指针申请空间详解 #### 一、引言 在C语言中,指针是一种非常重要的数据类型,它提供了灵活的操作内存的方式。而二级指针是指向指针的指针,它允许我们间接地操作内存地址。本文将通过一个具体的示例代码来...
指针的指针是一个三级指针,每一级的大小动态变化,m n w。例如,int *p; p=new int [m]; 申请空间时,每一级的大小都可以动态变化。访问时,使用 p[i][j][k]。释放空间时,需要按照从低级到高级反方向释放,否则会...
- **多级指针**:多级指针(如二级指针)允许对更深层次的数据结构进行操作。 - **指向函数的指针**:这种类型的指针可以指向一个函数,并通过该指针调用这个函数,常用于回调函数、函数指针数组等场合。 - **数组...
4. **指针本身占据的内存区**:每个指针都有自己的存储空间,其大小可通过`sizeof`操作符获取。在32位系统中,指针通常占用4个字节,在64位系统中通常占用8个字节。 #### 指针的示例分析 考虑以下几种类型的指针...
指针的高级用法还包括指针数组、指向指针的指针(二级指针)等,这些使得C语言具有强大的抽象和灵活性。然而,指针也带来了一定的复杂性,需要谨慎使用,以避免潜在的内存泄漏和悬挂指针等问题。因此,理解和熟练...
同样,`char*ip`的类型是`char*`,而`int**ip`的类型是`int**`,表示二级指针,它指向一个指针,该指针又指向一个整型变量。此外,`int(*ip)[5]`的类型是`int(*)[5]`,表示一个指针,它指向一个包含五个整数的数组。...
最后,我们讨论一下指向指针的指针,即二级指针,例如`int **pp`。这种类型的指针可以用来存储指针的地址,使得我们可以间接访问多层指针所指向的数据,这对于处理复杂的数据结构非常有用。 综上所述,C语言中的...
【C语言二级考试系统】是针对计算机二级C语言考试设计的一款笔试模拟系统,它提供了丰富的模拟试题,帮助考生熟悉考试环境,提升应试能力。在准备C语言二级考试的过程中,理解并掌握C语言的基本概念、语法结构以及...
4. 二级指针作为输出参数,常用于返回动态分配的内存,但建议转为一级指针配合返回值使用。 5. 三级及以上的指针作为输出参数,通常用于更复杂的内存管理,如动态分配的数组或结构体。 了解这些概念后,深入理解...
在MIT的"C语言指针和内存"课程中,学习者会深入理解C语言的核心概念,特别是指针和内存管理这两个至关重要的主题。C语言是一种底层编程语言,它允许程序员直接操作内存,通过指针实现高效的数据处理。以下是对这些...
【国家计算机二级历年考题(98到09)】是一个综合性的资源,包含了1998年至2009年间的国家计算机二级考试中C语言科目的历年试题。这个资料包对于准备参加国家计算机二级考试,特别是C语言部分的考生来说,具有极高的...
使用指针可以申请一块连续的内存空间,并通过指针来访问这块内存,这样就相当于创建了一个动态数组。动态数组为数组的大小在编译时不是固定的程序提供了解决方案,使得程序可以更加灵活地处理数据。 三、灵活处理...
二级指针做形参是指形参是一个指针的指针,传递给函数的是指针的指针的值,即地址的地址。例如,void GetMemory3(char p,int num)就是一个二级指针做形参的示例。在这个函数中,p是一个指针的指针变量,它的值是传递...
这里使用`malloc`函数在堆上分配了一个包含4个指向字符的指针的空间,并将其地址赋值给了二级指针`p`。 #### 二、C语言与C++编译器的区别 1. **文件扩展名与编译器选择**: - 所有的`.c`文件在Visual C/C++...
#### 二、指针与数组基础 在C语言中,数组是一系列连续存储的相同类型的元素集合。数组名本身就是一个指向数组首元素的指针。例如: ```c int array[5]; // 定义一个包含5个整型元素的数组 ``` 这里的`array`既是...
4. **链式存储结构**:链式存储克服了顺序存储的局限,动态申请和释放空间,通过指针指示逻辑次序,便于插入和删除操作。 5. **过程设计工具**:PAD图是过程设计中的图形工具,用于表示程序流程。 6. **模块独立性...
在准备二级计算机考试中,对C语言的深入理解和熟练掌握至关重要。 这份"二级必备资料"涵盖了C语言的核心知识点,包括但不限于以下部分: 1. **基础语法**:C语言的基础始于变量、数据类型(如int、char、float等)...
本资源“二级C语言笔试历年真卷”汇集了2005年至2009年的C语言考试真题,对于备考全国计算机等级考试二级C语言科目的考生来说,是一份极具价值的参考资料。 一、C语言基础 在这些真题中,你将遇到C语言的基本概念...
从给定的文件信息来看,这是一份关于C语言与指针的课程教材或参考书的目录和部分内容,旨在提供对C语言中的关键概念、数据类型、运算符、表达式、函数、数组、字符串、结构体、联合体、动态内存分配、预处理器、输入...
全国计算机等级考试二级C++笔试题涵盖了C++编程语言的基础知识、语法、数据结构以及程序设计等核心要点。以下是对这些知识点的详细说明: 1. **C++基础**: - **变量与类型**:C++支持多种数据类型,如整型(int)、...