访问元素:指向数组的指针与指向指针的指针
2011-04-24 19:12
246 查看
1.指向数组的指针
#include<iostream>
using namespace std;
void sort(char (*p)[6]);
void main()
{ char str[10][6];
int i;
char (*p)[6] = str;
cout<<"input 6 strings:"<<endl;
for(i=0; i < 10; i++)
cin>>str[i];
sort(p);
cout<<"Now, the sequence is:"<<endl;
for(i=0; i < 10; i++)
cout<<str[i]<<endl;
}
void sort(char (*p)[6])
{ int i, j;
char temp[6], *q = temp;
for(i=0; i < 10; i++)
for(j=0; j < 10 - i; j++)
//由于p是指向一维数组的指针变量,指向一个包含6个元素的数组,务必弄清楚一下两点:
//1,p + j + 1表示指向下标为j+1的元素的首地址的地址,即&p[j+1]
//2,*(p + j + 1)相当于指向下标是j+1的数组的首地址,即p[j+1],“*”不可省略
//*(*(p + i + 1) + j)相当于str[i][j]的首地址,类似下文第2点“指向指针的指针”中下标的操作
//是一种间接访问
//以下这句相当于if(strcmp(p[j],p[j+1]) > 0)
if(strcmp(*(p + j), *(p + j + 1)) > 0)
{ strcpy(q, *(p+j)); //相当于strcpy(q,p[j]);
strcpy(*(p+j), *(p+j+1)); //相当于strcpy(p[j], p[j+1]);
strcpy(*(p+j+1), q); //相当于strcpy(p[j+1], q);
}
}
2.指向指针的指针
#include
using namespace std;
void sort(char (*p)[6]);
void main()
{ char **p;
char * name[] = {"BASIC","FORTRAN","C++","PASCAL","COBOL"};
p = name;
cout<<*p<<endl;
cout<<*(*(p+1))<<endl;
cout<<*(*(p+1)+1)<<endl;
}
以上是练习《C++程序设计题解与上机指导》chapter 6.11解题方法2,以及对eg 6.8和eg6.16的总结。
#include<iostream>
using namespace std;
void sort(char (*p)[6]);
void main()
{ char str[10][6];
int i;
char (*p)[6] = str;
cout<<"input 6 strings:"<<endl;
for(i=0; i < 10; i++)
cin>>str[i];
sort(p);
cout<<"Now, the sequence is:"<<endl;
for(i=0; i < 10; i++)
cout<<str[i]<<endl;
}
void sort(char (*p)[6])
{ int i, j;
char temp[6], *q = temp;
for(i=0; i < 10; i++)
for(j=0; j < 10 - i; j++)
//由于p是指向一维数组的指针变量,指向一个包含6个元素的数组,务必弄清楚一下两点:
//1,p + j + 1表示指向下标为j+1的元素的首地址的地址,即&p[j+1]
//2,*(p + j + 1)相当于指向下标是j+1的数组的首地址,即p[j+1],“*”不可省略
//*(*(p + i + 1) + j)相当于str[i][j]的首地址,类似下文第2点“指向指针的指针”中下标的操作
//是一种间接访问
//以下这句相当于if(strcmp(p[j],p[j+1]) > 0)
if(strcmp(*(p + j), *(p + j + 1)) > 0)
{ strcpy(q, *(p+j)); //相当于strcpy(q,p[j]);
strcpy(*(p+j), *(p+j+1)); //相当于strcpy(p[j], p[j+1]);
strcpy(*(p+j+1), q); //相当于strcpy(p[j+1], q);
}
}
2.指向指针的指针
#include
using namespace std;
void sort(char (*p)[6]);
void main()
{ char **p;
char * name[] = {"BASIC","FORTRAN","C++","PASCAL","COBOL"};
p = name;
cout<<*p<<endl;
cout<<*(*(p+1))<<endl;
cout<<*(*(p+1)+1)<<endl;
}
以上是练习《C++程序设计题解与上机指导》chapter 6.11解题方法2,以及对eg 6.8和eg6.16的总结。
相关文章推荐
- 4,17建立对象数组,存放6个学生数据,指针指向数组首个元素,输出2,4,6个学生数据
- 指针访问方式从键盘给数组 a[N]输入数据, 然后对元素值重新按逆序存放并输出
- c语言-数组名字是指向数组第一个元素的指针
- 指向结构类型数组元素的指针
- 指向几个元素组成的一位数组指针的指针变量
- 【C语言】12-指向一维数组元素的指针
- C语言-指向一维数组元素的指针
- 数组指针——指向数组首元素和指向数组的区别
- 【C语言】12-指向一维数组元素的指针
- 指向几个元素组成的一位数组指针的指针变量
- 数组指针和指针数组的区别,以及如何利用他们访问数组里面的元素
- C语言基础-06-指向一维数组元素的指针
- 【C语言】12-指向一维数组元素的指针
- 用指针访问多维数组中的元素
- 指向数组的指针怎么访问数组元素??
- 学习笔记之12-指向一维数组元素的指针
- 建立一个数组,内存放5个学生的数据(学号、成绩),用指针指向数组首元素,输出1、3、5学生的数据
- php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
- 【C语言】12-指向一维数组元素的指针
- 指向一维数组元素的指针