(一)指针数组

指针数组就是每一个元素存放一个地址,相当于一个指针变量。
如: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函数的更多相关文章

  1. Atitit dsl对于数组的处理以及main函数的参数赋值

    Atitit dsl对于数组的处理以及main函数的参数赋值 1.1. 词法解析..添加了[] 方括号的解析支持1 1.2. Ast建立.添加了数组参数的支持..使用了递归下降法..getparam ...

  2. jquery带参插件函数的编写

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  3. python twisted 的定时调用带参的函数

    无参情况:lc = task.LoopingCall(fun)如果fun带有参数,可以使用functools.partial传递 (fun2 = partial(fun, param1,[...]) ...

  4. 带参数的main函数以及execl函数的应用

    ---恢复内容开始--- 代码1:(带参main函数) #include<stdio.h> int main(int number, char *parameter[]) { ; prin ...

  5. CPP-基础:函数指针,指针函数,指针数组

    函数指针 函数指针是指向函数的指针变量. 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数.这正如用指针变量可指向整型变量.字符型.数组一样,这里是指向函数.如前所述,C在编译时,每一个 ...

  6. 指向函数的指针数组(C++)

    我们能够创建一个指向函数的指针数组.为了选择一个函数,只需要使用数组的下标,然后间接引用这个指针.这种方式支持表格式驱动码的概念:可以根据状态变量去选择被执行函数,而不用条件语句或case语句.这种设 ...

  7. C 函数指针数组

    名字有点绕口,其实更应该翻译为指针函数数组. 记录下对Head-First C这一节的理解,几乎每天班车上都会咪两眼,几乎每次都是看不懂,敲一敲的时候才有些明白. 通俗点讲,这功能解决的是,具有同种签 ...

  8. C函数指针数组的定义和使用

    1.使用函数指针数组来实现计算器 2.通过函数指针变量来调用对应的函数 #include <stdio.h> int add(int a,int b){ return a+b; } int ...

  9. main函数参数解析

    int argc,char *argv agrc表示参数的个数 argv储存参数 这个函数的意思是逐一输出参数 实际上,main函数也可以带参数.带参数main函数的定义格式如下:void main( ...

随机推荐

  1. linux常用命令(不断更新)

    睡眠命令(第一步可省去): 1.查看你的系统支持什么模式:cat /sys/power/state(我的系统为:freeze mem disk) 2.切换到管理员模式下,执行命令:echo " ...

  2. php+redis 学习 二 悲观锁

    <?php header('content-type:text/html;chaeset=utf-8'); /** * redis实战 * * 实现悲观锁机制 * */ $timeout = 5 ...

  3. ThinkPHP的使用

    在public目录下使用命令行执行:php -S localhost:8888 route.php 无需使用服务器就可启动

  4. vagrant启动报错The following SSH command responded with a no

    vagrant package打包生成box,以这个box为基础模板,打造vagrant环境,启动vagrant报错 angel:vagrant $ vagrant up Bringing machi ...

  5. Dockerfile 中的 CMD 与 ENTRYPOINT

    CMD 和 ENTRYPOINT 指令都是用来指定容器启动时运行的命令.单从功能上来看,这两个命令几乎是重复的.单独使用其中的一个就可以实现绝大多数的用例.但是既然 doker 同时提供了它们,为了在 ...

  6. SQL SERVER FOR LINUX初体验

    今天得空,就在Ubuntu17.04上安装了SQL SERVER 2017体验下,总体来说还是不错的. 在Ubuntu上安装SQL SERVER 2017还是比较方便的,只需几条命令即可: curl ...

  7. [记录]MySQL读写分离(Atlas和MySQL-proxy)

    MySQL读写分离(Atlas和MySQL-proxy) 一.阿里云使用Atlas从外网访问MySQL(RDS) (同样的方式修改配置文件可以实现代理也可以实现读写分离,具体看使用场景) 1.在跳板机 ...

  8. 对网站视频资源的管控-禁止通过视频的url访问视频

    一般静态文件的下载是不经过PHP的,直接由web服务器发送到客户端.但有时候需要实现文件下载的权限控制等功能,这时候就需要经由PHP程序来做权限验证.简单粗暴的做法是,在PHP程序里边先验证权限,验证 ...

  9. PHP 是一门弱类型语言

    PHP 是一门弱类型语言 我们注意到,不必向 PHP 声明该变量的数据类型. PHP 会根据变量的值,自动把变量转换为正确的数据类型. 在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类 ...

  10. C 语言中模板的几种实现方式

    简单宏定义实现 简单宏定义 - 方式一 这种方式将主要实现部分放在一个宏定义中,利用字符替换的方式实现不同 type 的运算,详细思路见代码: simple_macro_1.c #include &l ...