`
pipal
  • 浏览: 164350 次
  • 性别: 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

    二级指针申请空间.txt

    二级指针内存模型.zip

    二级指针简单内存模型,在堆区maollc分配内存,free释放内存。将申请内存空间、释放内存空间、排序、打印接口进行了封装。

    C语言重要知识点梳理

    a)在堆空间申请一个普通变量(栈内变量:int n=-1;) int* p = (int*)malloc(sizeof...e)在堆空间中申请一个指针数组:(char* ss[10]={ ”abc”, ”dd”, ”aaa”};) char* *p = (char**)malloc(sizeof(char*) * 4);

    c/c++ 学习总结 初学者必备

    def是一个二级指针,它指向的是一个一维数组的指针,数组的元素都是float. (2)double*(*gh)[10]; gh是一个指针,它指向一个一维数组,数组元素都是double*. (3)double(*f[10])(); f是一个数组,f有10个元素,元素都是...

    C语言程序设计标准教程

    成员名 例如:boy1.num 即第一个人的学号 boy2.sex 即第二个人的性别 如果成员本身又是一个结构则必须逐级找到最低级的成员才能使用。例如:boy1.birthday.month 即第一个人出生的月份成员可以在程序中单独使用,与...

    你必须知道的495个C语言问题

    6.18 当我向一个接受指针的指针的函数传入二维数组的时候,编译器报错了。 6.19 我怎样编写接受编译时宽度未知的二维数组的函数? 6.20 我怎样在函数参数传递时混用静态和动态多维数组? 数组的大小 6.21 当...

    C语言大纲及课件

    动态申请内存空间和释放内存空间的操作。  ⑽ 预处理和标准函数  掌握:宏定义、宏调用、宏展开;文件包含中各头文件的使用。  理解:格式输出函数printf及其格式说明的格式字符;格式输入函数scanf及其格式说明...

    《你必须知道的495个C语言问题》

    这导致空间浪费而且无法与外部数据文件进行“二进制”读写。能否关掉填充,或者控制结构域的对齐方式? 27  2.14 为什么sizeof返回的值大于结构大小的期望值,是不是尾部有填充? 28 2.15 如何确定域在结构中的...

    操作系统,作业调度,进程调度,存储管理的实验

     进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。  每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要...

    c++ 面试题 总结

    块式管理:把主存分为一大块、一大块的,当所需的程序片断不在主存时就分配一块主存空间,把程 序片断load入主存,就算所需的程序片度只有几个字节也只能把这一块分配给它。这样会造成很大的浪费,平均浪费了50%的...

    C语言深度揭秘

    1.11.2,节省空间,避免不必要的内存分配,同时提高效率.................................... 35 1.12,最易变的关键字----volatile................................ 36 1.13,最会带帽子的关键字----extern.........

    C语言FAQ 常见问题列表

    o 7.15 当我向一个接受指针的指针的函数传入二维数组的时候, 编译器报错了。 o 7.16 我怎样编写接受编译时宽度未知的二维数组的函数 ? o 7.17 我怎样在函数参数传递时混用静态和动态多维数组 ? o 7.18 当数组...

    《数据结构 1800题》

    【北京邮电大学2000 二、3 (20/8分)】 A.效率 B. 复杂性 C. 现实性 D. 难度 2. 算法的时间复杂度取决于(C )【中科院计算所 1998 二、1 (2分)】 A.问题的规模 B. 待处理数据的初态 C. A和 B 3.计算机算法指...

    你必须知道的495个C语言问题(PDF)

    4.1 我想声明一个指针并为它分配一些空间, 但却不行。这些代码有 什么问题?char *p; *p = malloc(10); . . . . . . . . . . . . . . . . 17 4.2 *p++ 自增p 还是p 所指向的变量? . . . . . . . . . . . . . . . . ...

    操作系统课程设计(文件系统管理).docx

    同样,当本文件为文件夹时,为它申请相应的空间,AFD为空。以此来达到无穷级别目录的存储。 struct UFD { UFD *parent; UFD *leftchild; UFD *rightchild; UFD *folder; //作为文件夹时指向下一层,文件时为空 UFD *...

    文件系统课程设计报告.doc

    设计容: 为LINUX 设计一个简单的二级文件系统。本文件系统采用类似DOS系统的文件管理方式,每次调用 该文件系统时,首先申请一定的存空间,然后对该存空间进行分配。将申请到的空间划 分为目录区,文件区;采用位示...

    操作系统实验

    (申请空间利用位示图修改FAT) DEL:搜索所要删除的文件是否存在,若是则删除;(恢复位示图修改FAT) DIR:列出当前目录的所有目录项。 4、在创建文件的时候分配空闲的磁盘空间,采用显示链接的方式,利用文件分配...

Global site tag (gtag.js) - Google Analytics