好像很忙最近,白天上班晚上看书日子是不好过。
好多东西想去学还是感觉时间不够用,最近一直再看两本书感觉很有用,给大家分享一下,
以此来对本文开题。
一本是《大话数据结构》,推荐理由:内容朴实,易懂,图多,适合我这种算法类的菜鸟。而且有历程看完可以事件,去改一些例子,然后再去实现其他功能,是一本很好的学习教程,也能提高学习的主管能动性。。。
另一本是《c缺陷与陷阱》,看着这本书回忆着几个月前看的《c专家编程》思路涌现,对c的理解更上一层楼。绝对都是必看级别的。。。只叹大学不懂事用错书了。。。
好了言归正传,开始本文内容。。。
因为平时工作会用到dos和linux,所以带参数函数就用的比较多。
比如,fdisk -l 列出硬盘信息,wc -l列出代码行数等等 这些都是带参数函数的例子。
为什么要带参数?
我认为是:为了丰富程序内容的可选择性,实现多功能于一体的函数。
下面看下门函数的原型:
[code=C/C++]
int main(int argc,char** argv)
{
主函数内容
}
[/code]
两个主要的参数:
argc:函数参数的个数,类型是int。例如:fdisk -l 带了一个参数就说明此时的argc 为2,因为fdisk是一个 -l又是一个参数。
char** argv等价于 char* argv[] :argv是一个指针数组。
那么他到底指向的是什么元素?
请看下面的例子
[code=C/C++]
//做一个程序实现在console端输入 hello -h,让他输出helloworld
1 #include <stdio.h>
2 int main(int argc,char ** argv)
3 {
4 if(argc!=2)
5 printf("Error Parameters\n");
6
7 else{
8 if(strcmp(argv[1],"-h")==0)
9 {
10 printf("hello,world\n");
11 }
12 else
13 {
14 printf("No this function\n");
15 }
16 }
17 return 0;
18 }
[/code]
好多东西想去学还是感觉时间不够用,最近一直再看两本书感觉很有用,给大家分享一下,
以此来对本文开题。
一本是《大话数据结构》,推荐理由:内容朴实,易懂,图多,适合我这种算法类的菜鸟。而且有历程看完可以事件,去改一些例子,然后再去实现其他功能,是一本很好的学习教程,也能提高学习的主管能动性。。。
另一本是《c缺陷与陷阱》,看着这本书回忆着几个月前看的《c专家编程》思路涌现,对c的理解更上一层楼。绝对都是必看级别的。。。只叹大学不懂事用错书了。。。
好了言归正传,开始本文内容。。。
因为平时工作会用到dos和linux,所以带参数函数就用的比较多。
比如,fdisk -l 列出硬盘信息,wc -l列出代码行数等等 这些都是带参数函数的例子。
为什么要带参数?
我认为是:为了丰富程序内容的可选择性,实现多功能于一体的函数。
下面看下门函数的原型:
[code=C/C++]
int main(int argc,char** argv)
{
主函数内容
}
[/code]
两个主要的参数:
argc:函数参数的个数,类型是int。例如:fdisk -l 带了一个参数就说明此时的argc 为2,因为fdisk是一个 -l又是一个参数。
char** argv等价于 char* argv[] :argv是一个指针数组。
那么他到底指向的是什么元素?
请看下面的例子
[code=C/C++]
//做一个程序实现在console端输入 hello -h,让他输出helloworld
1 #include <stdio.h>
2 int main(int argc,char ** argv)
3 {
4 if(argc!=2)
5 printf("Error Parameters\n");
6
7 else{
8 if(strcmp(argv[1],"-h")==0)
9 {
10 printf("hello,world\n");
11 }
12 else
13 {
14 printf("No this function\n");
15 }
16 }
17 return 0;
18 }
[/code]
我们从console端输入的参数就存入了 argv[1]中吗?显然不是。
数组中的每一个元素都是指向char类型的指针。argv[1]就存储着指向这个char字符串的指针。
再看,strcmp:
[code=C/C++]
#include <string.h>
int strcmp(const char *s1, const char *s2);
两个参数都是指针。