指针数组

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

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

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. 阿里云安装mysql数据库出现2002错误解决办法

    在安装数据库的时候出现了如下错误: 解决办法如下: 1.在bin目录下 输入:kill -s 9 9907 再输入:ps -ef|grep mysql 显示如下: 2.回到lampp目录下,重启数据库 ...

  2. poj 3613 Cow Relays(矩阵的图论意义)

    题解 用一个矩阵来表示一个图的边的存在性,即矩阵C[i,j]=1表示有一条从i到j的有向边C[i,j]=0表示没有从i到j的边.这个矩阵的k次方后C[i,j]就表示有多少条从i到j恰好经过k条边的路径 ...

  3. 【Henu ACM Round#17 F】Upgrading Array

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 如果我们对某一个位置i操作两次的话. 显然结果就和操作一次一样. 因为第一次操作过后1..i这些数字就变成是互质的了. gcd为1. ...

  4. 洛谷——P1019 单词接龙(NOIP2000 T3)

    https://www.luogu.org/problem/show?pid=1019#sub 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母, ...

  5. 在iPad iOS8环境下打开相冊或者拍照

    在iPad下打开相冊或者拍照,假设使用 UIImagePickerController 打开相冊或者拍照,那必需要用到 UIPopoverController 去打开. UIPopoverContro ...

  6. abap选择屏幕上的button

    1.背景:近期在看sap的一些abapDemo,看了一个比較好用的功能.分享一下.希望对用到的兄弟有帮助,主要功能是:在选择屏幕上弹出一个小窗体.放一些button在上面,触发不同button,会处理 ...

  7. 《机器学习系统设计》之应用scikit-learn做文本分类(上)

    前言: 本系列是在作者学习<机器学习系统设计>([美] WilliRichert)过程中的思考与实践,全书通过Python从数据处理.到特征project,再到模型选择,把机器学习解决这个 ...

  8. JS学习十七天----工厂方法模式

    工厂方法模式 前言 今天自己看了一下自己写的部分博客,发现写的好丑....開始注意自己的排版!!可是偏亮也不是一朝一夕就完毕的,我尽量让它美丽一点.....每天美丽一点点 正文 工厂方法模式是一种实现 ...

  9. JAVA并发-为现有的线程安全类添加原子方法

    JAVA中有许多线程安全的基础模块类,一般情况下,这些基础模块类能满足我们需要的所有操作,但更多时候,他们并不能满足我们所有的需要.此时,我们需要想办法在不破坏已有的线程安全类的基础上添加一个新的原子 ...

  10. POJ 3275 两种做法

    题意: 思路: 1.Floyd传递闭包 n^3/32 勉强卡过去吧-- 2.用邻接表搞Floyd 也是勉强卡过去-- 最后用n*(n-1)-矩阵中为1的个数就OK了 传递闭包: //By Sirius ...