C语言第8章2善于利用指针程序.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
有关指针的小结 5指针运算 (5) 指针变量可以有空值,即该指针变量不指向任何变量,可以这样表示: p=NULL; #include stdioh int main() {int a[5]={1,3,5,7,9}; int *num[5]={a[0],a[1],a[2], a[3],a[4]}; int **p,i; p=num; for(i=0;i5;i++) { printf(%d ,**p); p++; } printf(\n); return 0; } a[0] a[1] a[2] a[3] a[4] p 1 2 3 4 5 3 指针数组作main函数的形参 指针数组的一个重要应用是作为main函数的形参。在以往的程序中,main函数的第一行一般写成以下形式: int main() 或 int main(void) 表示main函数没有参数,调用main函数时不必给出实参。 这是一般程序常采用的形式。 3 指针数组作main函数的形参 实际上,在某些情况下,main函数可以有参数,例如: int main(int argc,char *argv[]) 其中,argc和argv就是main函数的形参,它们是程序的“命令行参数”。 argv是*char指针数组,数组中每一个元素(其值为指针)指向命令行中的一个字符串。 3 指针数组作main函数的形参 通常main函数和其他函数组成一个文件模块,有一个文件名。 对这个文件进行编译和连接,得到可执行文件(后缀为exe)。用户执行这个可执行文件,操作系统就调用main函数,然后由main函数调用其他函数,从而完成程序的功能。 3 指针数组作main函数的形参 main函数的形参是从哪里传递给它们的呢? 显然形参的值不可能在程序中得到。 main函数是操作系统调用的,实参只能由操作系统给出。 #include stdioh int main(int argc,char *argv[]) { while(argc1) { ++argv; printf(“%s\n”, *argv); --argc; } return 0; } 在VC++环境下编译、连接后,“工程”—“设置”—“调试”—“程序变量”中输入“China Beijing”,再运行就可得到结果 动态内存分配与指向它的指针变量 8 什么是内存的动态分配 8 怎样建立内存的动态分配 8 void指针类型 8 什么是内存的动态分配 非静态的局部变量是分配在内存中的动态存储区的,这个存储区是一个称为栈的区域 C语言还允许建立内存动态分配区域,以存放一些临时用的数据,这些数据需要时随时开辟,不需要时随时释放。这些数据是临时存放在一个特别的自由存储区,称为堆区 8 怎样建立内存的动态分配 对内存的动态分配是通过系统提供的库函数来实现的,主要有malloc,calloc,free,realloc这4个函数。 8 怎样建立内存的动态分配 1malloc函数 其函数原型为 void *malloc(unsigned int size); 其作用是在内存的动态存储区中分配一个长度为size的连续空间 函数的值是所分配区域的第一个字节的地址,或者说,此函数是一个指针型函数,返回的指针指向该分配域的开头位置 8 怎样建立内存的动态分配 malloc(100); 开辟100字节的临时分配域,函数值为其第1个字节的地址 注意指针的基类型为void,即不指向任何类型的数据,只提供一个地址 如果此函数未能成功地执行(例如内存空间不足),则返回空指针(NULL) 8 怎样建立内存的动态分配 2calloc函数 其函数原型为 void *calloc(unsigned n,unsigned size); 其作用是在内存的动态存储区中分配n个长度为size的连续空间,这个空间一般比较大,足以保存一个数组。 8 怎样建立内存的动态分配 用calloc函数可以为一维数组开辟动态存储空间,n为数组元素个数,每个元素长度为size。这就是动态数组。函数返回指向所分配域的起始位置的指针;如果分配不成功,返回NULL。如: p=calloc(50,4); 开辟50×4个字节的临时分配域,把起始地址赋给指针变量p 8 怎样建立内存的动态分配 3free函数 其函数原型为 void free(void *p); 其作用是释放指针变量p所指向的动态空间,使这部分空间能重新被其他变量使用。p应是最近一次调用calloc或malloc函数时

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档