二级指针和数组
来源:互联网 发布:超极本推荐2017知乎 编辑:程序博客网 时间:2024/05/16 17:25
1。int a[5]
a是数组首元素的地址,一个常量指针,步长是一个元素的长度即int-4个字节
&a是数组的地址,在数值上与a-首元素的地址相等,但是步长是整个数组的长度5*4个字节
所以在数值上 a == &a 但是a+1 != &a+1 a+1移动四个字节,&a+1移动5*4个字节
2.int (*p)[5]
p是一个指向int [5] 类型的指针,步长为int [5] 的大小,即5*4个字节
p=&a;
(*p)即为a,(*p)[1]即为a[1]
3.int *p[] 是一个指针数组,元素是 int *
三种二级指针
第一种:char *p[]={"111","222","333","444","555"}; p是指针数组, 注意与 char (*p2)[]的区别,p2是一个指向char []的指针
栈区开辟一段5*4个字节的内存存放指针数组存放指针,指向全局区的“111”,“222”,“333”
第二种:char p3[3][4]={"111","222","333"};
在栈区开辟了一段3*4个字节的连续内存,存放"111"……
第三种:char **p4=(char **)malloc( 3*sizeof(char *) );
for(i=0;i<3;i++)
{
p4[i]=(char *)malloc( 4*sizeof(char) );
sprintf(p4[i],"%d%d%d",i,i,i);
}
(在栈区声明一个4个字节的)指针变量p4,指向堆区开辟的3个 sizeof(char *) 个字节的内存,这三个内存也存放指针,p4是首地址,3个指针分布 指向 堆区再次开辟的 4*sizeof(char)个字节的内存
与第一种内存空间相似
5. char *p[]={"111","aaa","bbb"};
指针数组长度 sizeof(p)/( sizeof(*p) )
但是
void func(char *p[])
{
int num=sizeof(p)/( sizeof(*p) );// 恒等于1,在函数调用过程中,char *p[]退化成二级指针char **p
}
- 二级指针和数组
- 指针数组和二级指针
- 二维数组和二级指针
- 二级指针和二维数组
- 二维数组和二级指针
- 二维数组和二级指针
- 二维数组和二级指针
- 二维数组和二级指针
- 二维数组和二级指针
- 二维数组和二级指针
- 二维数组和二级指针
- 二维数组和二级指针
- 二维数组和二级指针
- 二维数组和二级指针
- 数组指针,二级指针
- 数组指针、二级指针
- C++指针和数组:二级指针和二维数组
- 二级指针和二维数组的转换
- PHP输出到文件时 不会换行问题解决办法
- 【网络编程】TCP连接与断开的API图示讲解
- 字符编码转换(UTF8,UNICOD,GB2312。。。。。互相转换)
- poj 3481 Double Queue (SBT)
- 页面常用方法
- 二级指针和数组
- svn强制解锁
- 关于Message及Bundle数据
- struts2和JSP整合做页面---过程记录
- More than one row with the given identifier was found 问题
- 免费cocos2dx3.x视频教程
- 怎样输入多个字符串
- warning: Clock skew detected. Yourbuild may be incomplete
- 手把手教学,用jQuery Mobile创建Web App