指针数组与带参main函数
(一)指针数组
指针数组就是每一个元素存放一个地址,相当于一个指针变量。
如:int *p[4]
指针数组比较适合用来指向若干字符串,使得处理字符串更加灵活。
例如,现在要将若干字符串按字母顺序由小到大输出
#include<stdio.h>
#include<string.h>
int main(){
void sort(char *name[],int n);
void print(char *name[],int n);
char *name[]={"Follow me","BASIC","Great Wall","FORTRAN","Computer design"}; int n=;
sort(name,n);
print(name,n);
return ;
} void sort(char *name[],int n) //对字符串排序
{
char *temp;
int i,j,k;
for(i=;i<n-;i++){
k=i;
for(j=i+;j<n;j++)
if(strcmp(name[k],name[j])>) k=j;
if(k!=i){
temp=name[i];name[i]=name[k];name[k]=temp; //将指向第i个字符串的数组元素的值与指向第k个字符串数组元素的值对换
}
}
} void print(char *name[],int n){ //输出字符串
int i;
for(i=;i<n;i++)
printf("%s\n",name[i]);
}
通过上例子,试比较
if(strcmp(name[k],name[j])>0)和if(strcmp(*name[k],*name[j])>0)的区别:
if(strcmp(name[k],name[j])>0)是从头到尾一次比较字符串中的元素
而if(strcmp(*name[k],*name[j])>0)只比较指向字符串中的首元素
附:strcmp只是单纯的按照ascii码大小从头到尾比较,而stricmp则不区分大小写
(二)指向指针的指针
指向指针数据的指针变量 char **p;
指针数组的元素可以指向字符串,也可以指向整型数据或者实型数据
指向字符串的小例子
#include<stdio.h>
int main(){
char *name[]={"Follow me","BASIC","Great Wall","FORTRAN","Computer design"};
char **p;
int i;
for(i=;i<;i++){
p=name+i; //先使p指向name数组的name[0],*p是name[0]的值,即第一个字符串首字符的地址,依次输出5个字符串
printf("%s\n",*p);
}
}
指向整型数据的小例子
#include<stdio.h>
int main(){
int a[]={,,,,};
int *num[]={&a[],&a[],&a[],&a[],&a[]};
int **p,i;
p=num;
for(i=;i<;i++){
printf("%d ",**p); //p是&num[0],*p是num[0]的值,即a[0],**p是a[0]的值
p++;
}
}
利用指针变量访问另一变量称为间接访问
指向指针数据的指针用的就是二级间址,说通俗点就是通过两个地址访问一个变量,当通过多个(大于2)地址访问变量时,就称为多重指针
(三)指针数组作main函数形参
带参数的main函数原型:
int main(int argc, char *argv[ ] );
argc和argv是main函数的形参,它们是程序的命令行参数。argc指参数的个数,argv指参数向量,其中每一个元素指向命令行中的一个字符串。
main函数是操作系统调用的,所以实参只能由操作系统给出。在操作命令的状态下,实参是和执行文件的命令一起给出的。命令行中包括命令名和要传给main函数的参数
举个例子, $./echo computer and tom
echo是命令名,computer等是参数,此例子中argc为4,因为命令名也算其中一个参数
指针数组与带参main函数的更多相关文章
- Atitit dsl对于数组的处理以及main函数的参数赋值
Atitit dsl对于数组的处理以及main函数的参数赋值 1.1. 词法解析..添加了[] 方括号的解析支持1 1.2. Ast建立.添加了数组参数的支持..使用了递归下降法..getparam ...
- jquery带参插件函数的编写
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- python twisted 的定时调用带参的函数
无参情况:lc = task.LoopingCall(fun)如果fun带有参数,可以使用functools.partial传递 (fun2 = partial(fun, param1,[...]) ...
- 带参数的main函数以及execl函数的应用
---恢复内容开始--- 代码1:(带参main函数) #include<stdio.h> int main(int number, char *parameter[]) { ; prin ...
- CPP-基础:函数指针,指针函数,指针数组
函数指针 函数指针是指向函数的指针变量. 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数.这正如用指针变量可指向整型变量.字符型.数组一样,这里是指向函数.如前所述,C在编译时,每一个 ...
- 指向函数的指针数组(C++)
我们能够创建一个指向函数的指针数组.为了选择一个函数,只需要使用数组的下标,然后间接引用这个指针.这种方式支持表格式驱动码的概念:可以根据状态变量去选择被执行函数,而不用条件语句或case语句.这种设 ...
- C 函数指针数组
名字有点绕口,其实更应该翻译为指针函数数组. 记录下对Head-First C这一节的理解,几乎每天班车上都会咪两眼,几乎每次都是看不懂,敲一敲的时候才有些明白. 通俗点讲,这功能解决的是,具有同种签 ...
- C函数指针数组的定义和使用
1.使用函数指针数组来实现计算器 2.通过函数指针变量来调用对应的函数 #include <stdio.h> int add(int a,int b){ return a+b; } int ...
- main函数参数解析
int argc,char *argv agrc表示参数的个数 argv储存参数 这个函数的意思是逐一输出参数 实际上,main函数也可以带参数.带参数main函数的定义格式如下:void main( ...
随机推荐
- Codewars练习
记录一下比较聪明的codewars练习题解决方案,不得转载. 2017/12/19 You will be given a string and you task is to check if it ...
- 张高兴的 Windows 10 IoT 开发笔记:部署 ASP.NET Core 2 应用
今天是大年初二,都去走亲戚了吧,享受一下这难得的能和亲友相聚的时光.而我就不一样了,今天一回到家就又开始瞎折腾了,哈哈哈. 问题背景 最近花了点时间用 ASP.NET Core 2 写了个个人博客,中 ...
- 小甲鱼OD学习第9讲
这次我们的任务是破解这个要注册的软件,如下图所示 当我们输入账号密码的时候,它会提示输入的账号密码是无效的,如下图 我们把程序载入OD,然后在查找字符串那里输入提示的无效账号密码的字符串,如下图 然后 ...
- pip install 提示"no previously-included directories found matching"及"no previously-included files matching found anywhere in distribution",且偶发无法关联安装 PyPI 库的故障
环境描述: Python 2.7.5 CentOS-7.2 报错现象: (1).在虚拟环境下运行 pip install 命令安装 PyPI 第三方库,出现类似如下告警. Running setu ...
- PHPStorm 常用 设置配置 和快捷键大全 Win/Mac
[转自 http://blog.csdn.net/fenglailea/article/details/53350080] PHPStorm 下载及主题样式下载 http://www.lanmps.c ...
- php详细学习1
PHP中的引用 $a="now magic"; $b=&$a; $b="abc"; echo $b.$a; 结果:abcabc $a="now ...
- jq模仿雨滴下落的动画
效果如图: 实现思路:定时器每隔x秒生成宽高.下落速度(即动画执行时间).left随机的div. 1.CSS: body{ overflow: hidden;/*这是为了防止出现滚动条*/ } .co ...
- vue父子组件之间的通信
利用props在子组件接受父组件传过来的值1.父组件parentComp.vue <template> <childComp :fromParentToChild="fro ...
- 用VSCode开发一个基于asp.net core 2.0/sql server linux(docker)/ng5/bs4的项目(1)
最近使用vscode比较多. 学习了一下如何在mac上使用vscode开发asp.netcore项目. 这里是我写的关于vscode的一篇文章: https://www.cnblogs.com/cgz ...
- es6之let和const命令的一些笔记
let和const命令 let命令 基本用法 let命令用来声明变量,声明的变量只在命令所在的代码块内有效.for循环中很适合使用let命令. 有必要理解的例子: var a = []; for (v ...