一级指针,二级指针,指向数组的指针

对"black,green,yellow,pin,red"几个单词排序

01

#include <iostream.h>
#include <string.h>
void sort(char (*p)[20],int n)
{
	char *q;
	char b[20];
	q=b;
	int i,j;
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			if(strcmp(p[i],p[j])>0)
			{
				strcpy(q,*(p+i));
				strcpy(*(p+i),*(p+j));
				strcpy(*(p+j),q);
			}
		}
	}
}
void main()
{
	char a[5][20]={"black","green","yellow","pin","red"};
	sort(a,5);
	for(int i=0;i<5;i++)
	{
		cout<<a[i]<<endl;
	}
}

  02

#include <iostream.h>
#include <string.h>
void sort(char *p[],int n)
{
	char *q;
	int i,j;
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			if(strcmp(*(p+i),*(p+j))>0)
			{
				q=*(p+i);
				*(p+i)=*(p+j);
				*(p+j)=q;
			}
		}
	}
}
void main()
{
	char a[5][20]={"black","green","yellow","pin","red"};
	char *q[5];
	for(int i=0;i<5;i++)
	{
		q[i]=a[i];
	}
	sort(q,5);
	for(i=0;i<5;i++)
	{
		cout<<q[i]<<endl;
	}
}

  03

#include <iostream.h>
#include <string.h>
void sort(char *p,int n)
{
	char *q;
	char b[20];
	q=b;
	int i,j;
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			if(strcmp(p+i*20,p+j*20)>0)
			{
				strcpy(q,p+i*20);
				strcpy(p+i*20,p+j*20);
				strcpy(p+j*20,q);
			}
		}
	}
}
void main()
{
	char a[5][20]={"black","green","yellow","pin","red"};
	char *q;
	q=&a[0][0];
	sort(q,5);
	for(int i=0;i<5;i++)
	{
		cout<<a[i]<<endl;
	}
}

  04

#include <iostream.h>
#include <string.h>
void sort(char **p,int n)
{
	char *q;
	int i,j;
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			if(strcmp(*(p+i),*(p+j))>0)
			{
				q=*(p+i);
				*(p+i)=*(p+j);
				*(p+j)=q;
			}
		}
	}
}
void main()
{
	char a[5][20]={"black","green","yellow","pin","red"};
	char *q[5];
	for(int i=0;i<5;i++)
	{
		q[i]=a[i];
	}
	sort(q,5);
	for(i=0;i<5;i++)
	{
		cout<<a[i]<<endl;
	}
}

  

时间: 2024-10-17 19:31:16

一级指针,二级指针,指向数组的指针的相关文章

编程题:比较指向数组元素的指针变量和指向数组的指针变量的不同。

#include<stdio.h> void main() {int a[2][3]={1,2,3,4,5,6}; int *p1,(*p2)[3]; /*p1指向数组元素,p2指向包含3个元素的一维数组*/ p1=a[0];p2=a; /*用指向数组元素的指针变量输出二维数组元素*/ for(;p1<a[0]+6;p1++) printf("%4d",*p1); printf("\n"); /*用指向以为数组的指针变量输出二维数组元素*/ for

[C++程序设计]用指向数组的指针作函数参数

1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 void output(int (*p)[4]); 7 int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; 8 output(a); 9 return 0; 10 } 11 12 void output(int (*p)[4]) 13 { 14 int i,j; 15 for(i = 0; i < 3; i ++) 1

C语言数组指针(指向数组的指针)

注意:数组指针的定义,与指针数组的区别 转载:http://c.biancheng.net/cpp/biancheng/view/162.html 指向多维数组元素的指针变量 ① 指向数组元素的指针变量[例6.7]输出二维数组各元素的值.这里采用的方法是用基类型为整型的指针变量先后指向各元素,逐个输出它们的值. #include <iostream> using namespace std; int main( ) { int a[3][4]={1,3,5,7,9,11,13,15,17,19

C++——指针---指向数组的指针---指向字符串的指针--指向函数的指针--指针的指针--指针的引用

一.指向数组的指针 代码示例1: 1 int main() 2 { 3 int a[10]={0,2,4,6,8,10,12,14,16,18}; 4 int *p; 5 for(p=&a[0];p<&a[0]+10;p++) 6 printf("%d ",*p); 7 } 代码示例2: int a[10]={0,2,4,6,8,10,12,14,16,18}; int *p; p=a; printf("%d\n",*(a+5));//注意加括

C和指针 学习笔记-3.数组与指针

数据名代表首地址 指向数组的指针 #include <stdio.h> extern void iterate(int *p); void main(){ int a[]={1,2,3,4,5}; iterate(a); } void iterate(int *p){ int i; for(i=0;i<5;i++){ printf("%d",*p++); } } 指向一维数组的指针 int (*p)[3] #include <stdio.h> void i

什么是指针?什么是数组?指针和数组的关系?

形象地讲,我们可以把计算机的内存看作一条长街上的一排房屋,每个房间都可以容纳数据并通过一个房号来表识.而表示每个房间房号的值我们可以称为地址.或许这样的比喻有局限性,毕竟真实地计算机内存是以数以万计的bit位组成. ⑴初始化: ①最简单的以 int *p 为例,初始化时内存里开辟了四个字节的空间. ▇▇▇▇ ②另一个声明 ,现在,我们有两个变量,下图中显示了后面那个未知内容的内存. char ch = 'a': char cp = &a; ▇→▇▓←(?) (cp)      (ch) ⑵&quo

常量指针、指针常量、指向常量的指针常量

三个名词虽然非常绕嘴,不过说的非常准确.用中国话的语义分析就可以很方便地把三个概念区分开. 一) 常量指针. 常量是形容词,指针是名词,以指针为中心的一个偏正结构短语.这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针(变量). 指针指向的对象是常量,那么这个对象不能被更改. 在C/C++中,常量指针是这样声明的: 1)const int *p; 2)int const *p; 常量指针的使用要注意,指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改,也

关于数组的a和&amp;a的区别:一个是普通的指针,一个是数组的指针

这个问题是我和同学讨论时,产生的思考,后来做的实验性解答. 先来看一段小程序 1. #include<iostream> 2. using namespace std; 3. 4. int main() 5. { 6. int a[5]={1,2,3,4,5}; 7. int *ptr=(int *)(&a+1); 8. cout<<*(a+1)="<<*(a+1)<<"*(ptr-1)="<<*(ptr-1

常量指针、指针常量、指向常量的指针常量 的区别(转帖)

转自:常量指针与指针常量的区别(转帖)  建议直接访问原网址,查看下面的评论 三个名词虽然非常绕嘴,不过说的非常准确.用中国话的语义分析就可以很方便地把三个概念区分开. 一) 常量指针. 常量是形容词,指针是名词,以指针为中心的一个偏正结构短语.这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针(变量). 指针指向的对象是常量,那么这个对象不能被更改. 在C/C++中,常量指针是这样声明的: const int *p; int const *p; 常量指针的使用要注意,指

数组的地址+1 和 指向数组的指针+1 区别

定义了数组a[8],其中a,&a,&a[0]都是数组的起始地址.但是步长有区别,也就是指向的类型不同 a等同于a+0等同于&a[0],是指向数组第一个元素的指针,步长为指向的元素所占用的地址空间为sizeof(int) . &a也是指向数组第一个元素的指针,但其意义是指向整个数组的首地址,指向的类型为整个数组,所以其步长为8*sizeof(int) 而ptr指,针指向的是数组的是首地址,所以*(ptr-1)的值是8 即输出的结果是8 #include <stdio.h