8.2 二级指针 指针数组

二级指针找出最大的字符 :

  1. #include <stdio.h>
  2. char maxchar(char * str, char** max)
  3. {
  4. char da = *str; //先让最大的执行第一个字符
  5. *max = str;
  6. while (*str)
  7. {
  8. if (*str > da)
  9. {
  10. da = *str;
  11. *max = str;
  12. }
  13. str++;
  14. }
  15. return da;
  16. }
  17. int main()
  18. {
  19. char str[] = "hello liuwxeia";
  20. char * max = NULL;
  21. char ch = maxchar(str, &max);
  22. printf("%p\t%c\n", max, ch);
  23. printf("%p\n", &str);
  24. return 0;
  25. }

指针数组: 数组里的每个元素都是指针

int *a[5];         //a是一个数组,5个元素都是int *d的指针

// sizeof(a)     ----------->   20个字节。 因为a是一个数组,不是一个指针

//一个指针4个字节

对字符串数组进行排序:

  1. #include <stdio.h>
  2. void show_str(char **s, int n)
  3. {
  4. int i;
  5. for (i = 0; i < n; i++)
  6. {
  7. printf("%s\n", s[i]);
  8. }
  9. }
  10. void sort_str(char **s, int n)
  11. {
  12. int i, j, min;
  13. char * temp;
  14. for (i = 0; i < n; i++)
  15. {
  16. min = i;
  17. for (j = i + 1; j<n; j++)
  18. if (strcmp(s[min], s[j]) > 0)
  19. min = j;
  20. temp = s[min];
  21. s[min] = s[i];
  22. s[i] = temp;
  23. }
  24. }
  25. int main()
  26. {
  27. char *s[] = { "hello", "world", "liuwei", "xuanyuan", "nima" };
  28. show_str(s, 5);
  29. sort_str(s, 5);
  30. printf("*****************\n");
  31. show_str(s, 5);
  32. return 0;
  33. }

ps :参数里二级指针等价于指针数组

 二维数组等价于数组指针

来自为知笔记(Wiz)

时间: 2024-10-20 14:52:05

8.2 二级指针 指针数组的相关文章

【C/C++学院】0726-cppIDE/一级指针/指针数组/函数指针/函数指针数组/二级指针

[送给在路上的程序员] 对于一个开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并可以运用到系统中,由此简化系统的开发,是其架构生涯的第一步. 对于一个开发团队而言,能在短期内开发出用户满意的软件系统是起核心竞争力的体现. 每一个程序员都不能固步自封,要多接触新的行业,新的技术领域,突破自我. cppIDE 使用mfc和codeblocks中的mingw编译器.执行system命令中的bat批处理脚本. 一级指针 指针,结构体struct,

C语言一级指针、二级指针、数组作为参数传递需要注意的若干问题

在C语言编程时,经常会用到指针或数组作为参数传递,但有时结果却并不是自己想要的.下面总结下指针.数组作为参数传递需要的问题. 一级指针与二级指针的使用范围: 一级指针存放变量的地址,指向的值是变量的内容.如int* p={1,2,3}, p=数组的首地址,*p=数组的第一个值: 二级指针存放一级指针的地址,指向一级指针.如int*p ={1,2,3}, int**pp=&p,pp=指针p的首地址,*pp=数组的首地址,**pp=数组第一个值1. 在作为参数传递时什么时候用一级指针,什么时候用二级

当罗密欧遇到朱丽叶... ...当指针遇到数组

题目是扯淡. 无视 他们说, 题目要长长长长.... 当罗密欧遇到朱丽叶的时候, 看官们都很happy... 古典唯美悲情爱情嘛~ 然而捏. 数组遇到指针的时候, 我就差点panic了... 这里特别感谢 @Fantasy @凯旋冲锋 还有一起关注问题讨论问题的Essential On Linux的道友们 事情的起因源于这里的一个hash表的实现,里面用到了二级指针(还有三次解引用...) 第一感觉不科学, 然后debug, 程序没有挂 ...他居然没有挂... ----------------

c/c++ 函数、常量、指针和数组的关系梳理

压力才有动力,15年中旬就要准备实习,学习复习学习复习学习复习学习复习……无限循环中,好记性不如烂笔头……从数组开始,为主干. c 的array由一系列的类型相同的元素构成,数组声明包括数组元素个数和类型,c 中的数组参数是引用形式传参(传址调用),而常量标量是按值传递. //[]方括号表示声明的是数组,里面的数字表明了数组包含的元素数目 int states[50];//声明50个整数的数组 double code[365];//声明365个浮点数的数组 char chr[20];//声明20

C语言指针与数组易混淆知识点(一)

一指针与数组 二指针与函数 三指针数组数组指针指向指针的指针 四程序陷阱 一.指针与数组 指针:指针本身也是一个变量,它的内容是指向的内容的地址.指针同样有类型的区分,char 的指针只能指向char型数据,int 指针指向int型数据.但是指针所占内存单元的大小(即其内容)是跟操作系统的地址位数有关,比如32位地址的系统,那么指针所占的内存单元就是4个字节,16位就是2个字节,因此,指针的类型只是限定它所指向的变量的类型,其内容所占的单元大小是与操作系统的地址位数相关,与变量类型无关. 在32

指针和数组解析

指针和数组 指针和数组是一样的吗? 经常可以看到“数组就是指针”.“数组名就是常量指针”这些说法,但真的是这样吗?让我们先看一下指针和数组的定义. 1. 指针 根据C99标准,指针的定义如下: A pointer type may be derived from a function type or an object type, called the referenced type. A pointer type describes an object whose value provides

C++指针与数组

对数组地址的理解,如 int c[2] = {2,3}; int(*cp)[2] = &c; cout << &c[0] << c << cp << endl; 输出都是一样的..结论:当对数组用&比如&c,那么意思就是“对数组取地址或者取得数组的地址”,而数组的地址返回的就是第一个元素的地址,加上数组名本身也是一个指针,故c与&c会有一样的结果. 本版讨论很多对于C语言中指针和数组的认识和看法,下面是我自己对指针的一

【指针篇】C语言:指针与数组的区别,数组指针与指针数组的剖析。

指针就是指针,指针变量在 32位系统下,永远占 4  个byte ,其值为某一个内存的地址.指针可以指向任何地方,但是不是任何地方你都能通过这个指针变量访问到. 数组就是数组,其大小与元素的类型和个数有关.定义数组时必须指定其元素的类型和个数.数组可以存任何类型的数据,但不能存函数. 说起指针,就让我们想到数组.而数组和指针也是有区别的.指针,指的是描述一个变量的地址:我们可通过指针的偏移来指向下一个地址.数组,是描述相同元素的一个集合:数组名是常量地址,不可自加不可修改. 我们可以通过数组的下

C语言指针与数组的定义与声明易错分析

部分摘自<C语言深度解剖> 1.定义为数组,声明为指针 在文件1中定义: char a[100]; 在文件2中声明: extern char *a; //这样是错误的 这里的extern告诉编译器a这个名字已经在别的文件中被定义了,下面的代码使用的a是在别的文件中定义的.编译器是按文件分别编译的,当a被声明为char* a时,编译器理所当然的认为a是一个指针变量,在32位系统下占用4个byte,这4个byte存放的是地址,地址指向的空间存储的是char类型数据. 程序会返回SIGSEGV. 2

嵌入式Linux C语言(四)——指针与数组

嵌入式Linux C语言(四)--指针与数组 数组是C语言内建的数据结构,彻底理解数组及其用法是开发高效应用程序的基础.数组和指针紧密关联,但又不是完全可以互换. 一.数组简介 数组是能用索引访问的同种类型元素的连续集合.数组的元素在内存中是相邻的,中间不存在空隙,数组的元素是相同类型的. 1.数组的解读 数组的定义:int a[10] = {0,1,2,3,4,5}; a[0]:数组的第一个元素,首元素(做左值时表示第0个元素的内存空间) &a:数组的首地址,是常量,不能做左值,类型等同int