`
pipal
  • 浏览: 166188 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

给二级指针申请空间

 
阅读更多
#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;
}
0
0
分享到:
评论
3 楼 ph4nut 2010-01-01  
給指針的指針分配內存很容易寫錯,如果沒有編譯器來調試代碼的話,更容易出錯!
2 楼 fanchangyong 2009-10-12  
二级指针就是"指向指针的指针"吧?
楼主的分享不错,以前挺迷糊的.
1 楼 myrealstory 2009-10-09  
哇!这样都可以阿?让我大开眼界了。。

相关推荐

    二级指针申请空间.txt

    ### 二级指针申请空间详解 #### 一、引言 在C语言中,指针是一种非常重要的数据类型,它提供了灵活的操作内存的方式。而二级指针是指向指针的指针,它允许我们间接地操作内存地址。本文将通过一个具体的示例代码来...

    C\C++ 数组与指针彻底总结

    指针的指针是一个三级指针,每一级的大小动态变化,m n w。例如,int *p; p=new int [m]; 申请空间时,每一级的大小都可以动态变化。访问时,使用 p[i][j][k]。释放空间时,需要按照从低级到高级反方向释放,否则会...

    《C与指针》 让你从此爱上指针

    - **多级指针**:多级指针(如二级指针)允许对更深层次的数据结构进行操作。 - **指向函数的指针**:这种类型的指针可以指向一个函数,并通过该指针调用这个函数,常用于回调函数、函数指针数组等场合。 - **数组...

    掌握C语言指针的好方法

    4. **指针本身占据的内存区**:每个指针都有自己的存储空间,其大小可通过`sizeof`操作符获取。在32位系统中,指针通常占用4个字节,在64位系统中通常占用8个字节。 #### 指针的示例分析 考虑以下几种类型的指针...

    C语言课件:第十章 指针(Pointers).ppt

    指针的高级用法还包括指针数组、指向指针的指针(二级指针)等,这些使得C语言具有强大的抽象和灵活性。然而,指针也带来了一定的复杂性,需要谨慎使用,以避免潜在的内存泄漏和悬挂指针等问题。因此,理解和熟练...

    c++指针介绍

    同样,`char*ip`的类型是`char*`,而`int**ip`的类型是`int**`,表示二级指针,它指向一个指针,该指针又指向一个整型变量。此外,`int(*ip)[5]`的类型是`int(*)[5]`,表示一个指针,它指向一个包含五个整数的数组。...

    C语言指针详解__ppt文件

    最后,我们讨论一下指向指针的指针,即二级指针,例如`int **pp`。这种类型的指针可以用来存储指针的地址,使得我们可以间接访问多层指针所指向的数据,这对于处理复杂的数据结构非常有用。 综上所述,C语言中的...

    笔试系统(二级C语言)

    【C语言二级考试系统】是针对计算机二级C语言考试设计的一款笔试模拟系统,它提供了丰富的模拟试题,帮助考生熟悉考试环境,提升应试能力。在准备C语言二级考试的过程中,理解并掌握C语言的基本概念、语法结构以及...

    深入理解C语言指针

    4. 二级指针作为输出参数,常用于返回动态分配的内存,但建议转为一级指针配合返回值使用。 5. 三级及以上的指针作为输出参数,通常用于更复杂的内存管理,如动态分配的数组或结构体。 了解这些概念后,深入理解...

    MIT c语言指针和内存 课程笔记

    在MIT的"C语言指针和内存"课程中,学习者会深入理解C语言的核心概念,特别是指针和内存管理这两个至关重要的主题。C语言是一种底层编程语言,它允许程序员直接操作内存,通过指针实现高效的数据处理。以下是对这些...

    国家计算机二级历年考题(98到09)

    【国家计算机二级历年考题(98到09)】是一个综合性的资源,包含了1998年至2009年间的国家计算机二级考试中C语言科目的历年试题。这个资料包对于准备参加国家计算机二级考试,特别是C语言部分的考生来说,具有极高的...

    浅析C语言使用指针的必要性.pdf

    使用指针可以申请一块连续的内存空间,并通过指针来访问这块内存,这样就相当于创建了一个动态数组。动态数组为数组的大小在编译时不是固定的程序提供了解决方案,使得程序可以更加灵活地处理数据。 三、灵活处理...

    指针做形参做局部变量以及内存分配

    二级指针做形参是指形参是一个指针的指针,传递给函数的是指针的指针的值,即地址的地址。例如,void GetMemory3(char p,int num)就是一个二级指针做形参的示例。在这个函数中,p是一个指针的指针变量,它的值是传递...

    C语言重要知识点梳理

    这里使用`malloc`函数在堆上分配了一个包含4个指向字符的指针的空间,并将其地址赋值给了二级指针`p`。 #### 二、C语言与C++编译器的区别 1. **文件扩展名与编译器选择**: - 所有的`.c`文件在Visual C/C++...

    C语言 指针数组

    #### 二、指针与数组基础 在C语言中,数组是一系列连续存储的相同类型的元素集合。数组名本身就是一个指向数组首元素的指针。例如: ```c int array[5]; // 定义一个包含5个整型元素的数组 ``` 这里的`array`既是...

    二级c考前试卷

    4. **链式存储结构**:链式存储克服了顺序存储的局限,动态申请和释放空间,通过指针指示逻辑次序,便于插入和删除操作。 5. **过程设计工具**:PAD图是过程设计中的图形工具,用于表示程序流程。 6. **模块独立性...

    C程序设计,二级必备资料

    在准备二级计算机考试中,对C语言的深入理解和熟练掌握至关重要。 这份"二级必备资料"涵盖了C语言的核心知识点,包括但不限于以下部分: 1. **基础语法**:C语言的基础始于变量、数据类型(如int、char、float等)...

    二级C语言笔试历年真卷

    本资源“二级C语言笔试历年真卷”汇集了2005年至2009年的C语言考试真题,对于备考全国计算机等级考试二级C语言科目的考生来说,是一份极具价值的参考资料。 一、C语言基础 在这些真题中,你将遇到C语言的基本概念...

    c和指针课后题答案(完整版)

    从给定的文件信息来看,这是一份关于C语言与指针的课程教材或参考书的目录和部分内容,旨在提供对C语言中的关键概念、数据类型、运算符、表达式、函数、数组、字符串、结构体、联合体、动态内存分配、预处理器、输入...

    全国计算机等级考试二级C++笔试题.doc

    全国计算机等级考试二级C++笔试题涵盖了C++编程语言的基础知识、语法、数据结构以及程序设计等核心要点。以下是对这些知识点的详细说明: 1. **C++基础**: - **变量与类型**:C++支持多种数据类型,如整型(int)、...

Global site tag (gtag.js) - Google Analytics