指针数组

指针数组的本质是数组,数组指针的本质是指针

一个数组中的各个元素都是字符指针,即为字符指针数组,或者指针数组。

int arr[] = {1,2,23,45,6};//整形数组
char cArr[] = {'a','b','v','d'};//字符数组
char a,b,c,d;
char * cpArr[] = {&a,&b,&c,&d};
//<=> {char*,char*,char*,char*}字符数组指针
char *pa ="China",*pb = "America",*pc = "Canada",*pd = "Japan";
char * cppArr[] = {pa,pb,pc,pd};//放进去的是地址
//<=>
for(int i = 0;i < 4;i++) {
printf("%p %s\n",cppArr[i],cppArr[i]);
}
char * pArr[] = {"China","Amercia","Canada","Japan"};//指针数组存放的事字符串的地址
for(int i = 0;i < 4;i++) {
printf("%p %s\n",cppArr[i],cppArr[i]);
}//和上述输入的结果是一样的
/*
00404044 China
0040404A America
00404052 Canada
00404059 Japan
00404044 China
0040404A America
00404052 Canada
00404059 Japan
*/

排序:

char * pArr[] = {"China","America","Canada","Japan"};
for(int i = 0;i < 4;i++) {
printf("%p %s\n",pArr[i],pArr[i]);
}
int n = sizeof(pArr)/sizeof(*pArr);//sizeof(pArr);总的pArr的大小,*pArr是数组首元素的大小。
char *pt;
for(int i = 0;i < n-1;i++) {
for(int j = i+1;j < n;j++) {
if(strcmp(pArr[i],pArr[j]) > 0) {
pt = pArr[i];
pArr[i] = pArr[j];
pArr[j] = pt;
}
}
}
printf("\n+++++++++++++++++++++++++++++++\n");
for(int i = 0;i < 4;i++) {
printf("%p %s\n",pArr[i],pArr[i]);
}
/*
00404044 China
0040404A America
00404052 Canada
00404059 Japan +++++++++++++++++++++++++++++++
0040404A America
00404052 Canada
00404044 China
00404059 Japan
上述的字符串是放在data 的rodata段中,无法直接操作字符串,利用字符指针数组进行排序,将其的地址排序,实现数据的排序。相当于在图书馆里实现图书的排序,书库的书不动只把书的序号排序 */

启动进程时系统通过命令行传递给进程的参数,即main的参数。

int main(int argc,char * argv[]) {
//argc arg: argument(参数),c:count(个数)--参数个数
//*argv *arg:指针数组,v vector(向量)---指针数组向量
}

"0"

int   0; //0
float 0.0;//0.0
* NULL //标识未初始化的指针,代表内存的零地址
char '\0';//用于表示字符串结束的标志 //假0
char '0';//'0'
"0" '0'+'\0';//

C/C++(指针数组)的更多相关文章

  1. C与指针(结构体指针,函数指针,数组指针,指针数组)定义与使用

    类型 普通指针 指针数组(非指针类型) 数组指针 结构体指针 函数指针 二重指针 定义方式 int *p; int *p[5]; int (*p)[5]; int a[3][5]; struct{.. ...

  2. C++基础——函数指针 函数指针数组

    ==================================声明================================== 本文版权归作者所有. 本文原创,转载必须在正文中显要地注明 ...

  3. C++中指针数组的分配与释放

    C++中可用new和delete关键字分配和释放内存,但是如果遇到指针数组(或指向指针的指针),分配和释放必须慎重,不然容易造成内存泄漏. 下面用一段代码给出如何使用指向指针的指针来分配和释放内存: ...

  4. typedef 函数指针 数组 std::function

    1.整型指针 typedef int* PINT;或typedef int *PINT; 2.结构体 typedef struct { double data;}DATA,  *PDATA;  //D ...

  5. 指针数组 null与空字符串

    指针数组常适用于指向若干字符串,这样使字符串处理更加灵活方便. 在c++中,null表示:对象为空,它是对指针而言的.而""表示:值为空,它是对字符串而言的.

  6. C语言--指向多维数组的指针和指针数组

    #include <stdio.h> //void show(char *p[]); ]); int main(){ ][]={","abc","x ...

  7. 【C语言入门教程】4.8 指针数组

    指针数组是一种特殊的数组,这类数组存放的全部是同一数据类型的内存地址.指针数组的定义形式为: 数据类型 *数组名[长度]; 例如: const char *c[4] = { "China&q ...

  8. 指针数组 vs 数组指针

        指针数组,故名思义,就是指针的数组,数组的元素是指针:     数组指针,同样,就是直想数组的指针.     简单举例说明:     int *p[2]; 首先声明了一个数组,数组的元素是in ...

  9. C语言->实验室->指针数组

    一 分析 讨论指针数组要从三个层面来考虑: 1)指针数组本身是什么 2)指针数组作为参数时的表现 3)指针数组作为返回值时的表现 二 指针数组是什么 1)指针数组--指针的集合 数组是若干元素的集合, ...

  10. c/c++ 函数指针 指针函数 数组的引用 指针数组 数组指针

    1.指针数组数组指针 引用数组 数组的引用 int *a[10] 指针数组 每一个元素都是一个指针 Int (*a)[10] 数组指针 P指向一个含有10个元素的数组 Int (&a)[10] ...

随机推荐

  1. 编译php并与nginx整合

    告诉 Nginx 如何处理 php 文件:          nginx>vim  conf/nginx.conf                     location ~ \.php${ ...

  2. python描述符和属性查找

    python描述符 定义 一般说来,描述符是一种访问对象属性时候的绑定行为,如果这个对象属性定义了__get__(),__set__(), and __delete__()一种或者几种,那么就称之为描 ...

  3. Git学习总结(6)——作为一名程序员这些代码托管工具你都知道吗?

    作为一名程序员这些代码托管工具你都知道吗? 作为一名优秀的开发者,大家都会用到代码托管,我本人用的是github,确实github里面有很多很多开源的项目,所以我们目前的创业项目程序员客栈www.pr ...

  4. Java基础学习总结(13)——流IO

    一.JAVA流式输入/输出原理 流是用来读写数据的,java有一个类叫File,它封装的是文件的文件名,只是内存里面的一个对象,真正的文件是在硬盘上的一块空间,在这个文件里面存放着各种各样的数据,我们 ...

  5. Liquibase被锁

    经常运行过程中出现 Liquibase - Waiting for changelog lock Waiting for changelog lock.... Running the migratio ...

  6. 理解FPGA中的RAM、ROM和CAM;ROM、RAM、DRAM、SRAM、FLASH

    目前大多数FPGA都有内嵌的块RAM(Block RAM),可以将其灵活地配置成单端口RAM(DPRAM,Single Port RAM).双端口RAM(DPRAM,Double Ports RAM) ...

  7. Lesson 2 Building your first web page: Part 2

    Tag Diagram You may have noticed that HTML tags come in pairs; HTML has both an opening tag (<tag ...

  8. 外连接OUTER JOIN(三十五)

    外连接OUTER JOIN   LEFT [OUTER] JOIN,左外连接 显示左表的全部记录及右表符合连接条件的记录 下面我们来演示一下,操作命令及部分结果如下: SELECT goods_id, ...

  9. Linux下图解minicom安装

    Linux下图解minicom安装 minicom是一个串口通信工具,就像Windows下的HyperTerminal.可用来与串口设备通信,如调试交换机和Modem等.它的Ubuntu软件包的名称就 ...

  10. 突破极限 解决大硬盘上安装Sco Unix新思路

    突破极限 解决大硬盘上安装Sco Unix新思路 [url]http://os.51cto.com/art/200809/89750.htm[/url]       硬盘越做越大,然我喜欢让我忧.10 ...