☰
【c++】c语言入门到c++使用高手: c语言入门之指针(九)
2026/10/23 4:03:05 网站建设 项目流程

第九章 指针

第九节 指针数组, 指针的指针, main函数参数, 小节

1. 指针数组概念回顾

  • 一个数组,其元素均为指针类型数据,称为指针数组,

  • 指针数组的定义形式:
    类型标识符 *数组名[数字长度说明] //int *p[4],每个数组元素都可以看作是一个指针变量,
    都可以指向一个指针变量

  • 数组指针 int (*p)[4],指向一维数组的指针变量

#include<iostream>#include<cstring>intmain(){//指针数组char*pName[]={"C++","JAVA","PYTHON","GO","CSHARP"};intbytes=sizeof(pName);//每个指针变量占8个字节,这点要注意!!printf("bytes of pName: %d\n",bytes);intlen=sizeof(pName)/sizeof(char*);printf("length of pName: %d\n",len);printf("%d\n",sizeof(char));char*p2="JAVA";//把字符串的首地址赋给指针inti;for(i=0;i<len;i++){printf("pName[%d]: %s\n",i,pName[i]);}printf("************************\n");char*ptmp;ptmp=pName[0];//ptmp指向C++pName[0]=pName[1];//pName[0]指向JAVApName[1]=ptmp;//pName[1]指向C++for(i=0;i<len;i++){printf("pName[%d]: %s\n",i,pName[i]);}printf("************************\n");return0;}

2. 指向指针的指针

  • 用来指向指针变量的变量,简称指向指针的指针
// *(*p)表示指针变量p指向指针变量,*p是p所指向的指针变量char**p;//定义了一个指向字符串指针变量的指针变量int**pInt;//定义了一个指向整型指针变量的指针变量
  • 实例
#include<iostream>#include<cstring>intmain(){//指针数组char*pName[]={"C++","JAVA","PYTHON","GO","CSHARP"};char**pp;//定义了一个指向字符串指针变量的指针变量pp=&pName[0];//*pp = pName[0]printf("*pp = %s\n",*pp);intabc=5;int*pabc=&abc;//指向整型数据的指针int**ppabc=&pabc;//指向指针的指针printf("abc = %d\n",abc);printf("*pabc = %d\n",*pabc);printf("**ppabc = %d\n",**ppabc);return0;}

3. 指针数组做main函数形参

  • 指针数组的重要应用是能够做main函数的参数

  • 指针数组可以接收不确定长度的参数,灵活性很强

#include<iostream>#include<cstring>//添加了两个形参,第一个形参整型,第二个形参是指针数组// argc保存的是argv指针数组的元素个数// argv[0]保存的是当前可执行文件的完整路径文件名intmain(intargc,char*argv[]){inti;printf("argc: %d\n",argc);for(i=0;i<argc;i++){// printf("argv[%d]: %s\n", i, argv[i]);printf("argv[%d]: %s\n",i,*argv);argv++;}return0;}

4. 本章小节

指针数据类型
定义含义
int i定义整型变量
int *pp为指向整型数据的指针变量
int a[n]定义整型数组a,它有n个元素
int *p[n]定义指针数组p,它由n个指向征信数据的指针元素组成
int (*p)[n]p为指向包含n个元素的一维数组数组的指针变量
int f()函数f,返回一个整型值
int *p()函数p,返回一个指针,这个指针指向一个整型数据
int (*p)()p是一个指向函数的指针,这个函数返回一个整型值
int **pp是一个指针变量,指向另外一个整型数据的指针
指针运算小结
  • 指针变量的加减(p++, p–)

  • 指针变量的赋值(int *p,不能直接赋值地址),只能够将变量已经分配的
    地址赋值给指针变量

  • 指针变量可以为空值,表示不指向任何变量

// NULL就是整数0,使p指向地址为0的单元// 系统会保证地址为0这个单元不存放任何有效数据int*p=NULL;if(p==NULL){p=&a}
  • void*型指针:万能型指针变量
#include<iostream>#include<cstring>intmain(intargc,char*argv[]){inta=3;int*p=&a;floatbf=56.f;float*pf=&bf;void*pwn=NULL;pwn=p;pwn=pf;pf=(float*)pwn;return0;}
总结
  • 优点: 效率高

  • 缺点: 太过灵活

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询