C指针(3)——指向指针的指针(程序讲解)
2018-12-04 07:12:49来源:博客园 阅读 ()
int **q可以分成两部分,即int* 和 (*q),后面的 “q” 中的* 表示q是一个指针变量,前面的int*表示指针变量q只能存放int*型变量的地址。int** q表示为指针变量q只能存放int*型变量的地址。
4-1.c多维数组的定义
#include<stdio.h> int main(void) { int i,j; int data[2][3]={{1,2,3},{4,5,6}}; //定义二维数组data,2行3列;并对其进行初始化 printf("data[2][3]:\n"); for(i=0;i<2;i++) { for(j=0;j<3;j++) { printf(" %d",data[i][j]); } printf("\n"); } return 0; }
上例子为(a)
结果(a):
data[2][3]: 1 2 3 4 5 6
对(a)进行修改:数组 int data[2][3]; 只定义不赋值。
结果(b):
data[2][3]: -858993460 -858993460 -858993460 -858993460 -858993460 -858993460
对(a)进行修改:数组 int data[2][3]={{1,2,3}};
结果(c):
data[2][3]: 1 2 3 0 0 0
对(a)进行修改: printf(" %d",&data[i][j]);
结果(d):
data[2][3]: 2227836 2227840 2227844 2227848 2227852 2227856
4-2.c指针的指针
#include<stdio.h> int main(void) { char *name[]={"Fujian","Huian"}; //定义指针数组name,并对其进行初始化 char **p_name; //定义指针的指针p_name printf("name[0]:%p\n",name[0]); //输出指针数组元素name[0]的值,这里是第一个字符串的首地址 printf("name[1]:%p\n",name[1]); printf("\n"); p_name=&name[0]; //把name[0]的地址赋值给p_name,即p_name指向name[0],因为name[0]的内容是地址,所以p_name是指向地址的指针变量,即指针的指针 printf("&name[0]:%p\n",p_name); //输出p_name的值,即name[0]的地址 p_name=&name[1]; printf("&name[1]:%p\n",p_name); return 0; }
两个地址:前一个是指针变量的内容(为一个地址),即被指针变量指向的数据的地址;
后一个是指针变量本身的地址,这个地址就是指针的指针的内容。
结果:
name[0]:000E5788 name[1]:000E5780 &name[0]:002EF854 &name[1]:002EF858
4-3.c
#include <stdio.h> int main(void) { char *name[ ]={"Fujian","Quanzhou"}; char **p_name; int i; p_name=name; for(i=0;i<2;i++) { printf("%s",*(p_name+i)); } printf("\n"); return 0; }
补充:指针,就是地址;指针变量就是存储地址的变量。
对于多维数组int data[2][3] ; 2行3列,二维数组可以理解为一维数组的嵌套。
可以理解为:
-
-
- data是一个一维数组,包含 data[0],data[1] 2个元素
- 而 data[0] 又是一个一维数组,包含 data[0][0],data[0][1],data[0][2] 3个元素
- data是 data[0],data[1] 的数组名,所以数组名 data是data[0] 的地址
- data[0]是数组 data[0][0],data[0][1],data[0][2] 的数组名,数组名是首元素的地址,所以data[0]是data[0][0]的地址
-
-
-
- 对于一维数组 a[ ] ,则有 a[i] 相当于 *[a+i]
- 对于二维数组data[ ][ ],则有data[i][j] 相当于*(data[i]+j) 或者 *data(*(data+i)+j)
-
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:C语言学习记录
- C++ this指针 2020-06-03
- C语言程序结构 2020-05-31
- ftp客户端封装 2020-05-10
- 纯虚函数与基类指针数组的运用 代码参考 2020-04-30
- C代做 C++代做 C++编程代做 C++程序代做 2020-04-29
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash