例6.5 指针变量指向数组元素并输出;
#include<iostream>
#include<string>
using namespace std;
int main()
{
int a[10];
int i, *p = a;
for (i = 0; i < 10; i++)
cin >> *(p + i);
cout << endl;
for (p = a; p < (a + 10); p++)
cout << *p << " ";
cout << endl;
return 0;
}
执行效果如图:
例6.9,定义一个字符指针变量并初始化,然后输出他指向的字符串:
#include<iostream>
#include<string>
using namespace std;
int main()
{
char *str = "I love china!";
cout << str << endl;
return 0;
}
执行效果如图:
例6.10,将字符串str1复制为字符串str2
#include<iostream>
using namespace std;
int main()
{
char str1[] = "I love china",str2[20], *p1, *p2;
p1 = str1; p2=str2;
for (; *p1 != '\0'; p1++, p2++)
*p2 = *p1;
*p2 = '\0';
p1 = str1; p2 = str2;
cout << "str1 is:" << p1 << endl;
cout << "str2 is:" << p2 << endl;
return 0;
}
执行效果如图:
例6.12 若干字符串按字母顺序输出:
#include<iostream>
using namespace std;
int main()
{
void sort(char *name[], int n);
void print(char *name[], int n);
char *name[] = { "Basic", "Fortran", "C++", "Pascal", "Cobol" };
int n = 5;
sort(name, n);
print(name, n);
return 0;
}
void sort(char *name[], int n)
{
char *temp;
int i, j, k;
for (i = 0; i < n - 1; i++)
{
k = i;
for (j = i + 1; j < n; j++)
if (strcmp(name[k], name[j]) > 0)k = j;
if (k != i)
{
temp = name[i]; name[i] = name[k]; name[k] = temp;
}
}
}
void print(char *name[], int n)
{
int i;
for (i = 0; i < n; i++)
cout << name[i] << endl;
}
执行效果如图:
6.13指向指针的指针:
#include<iostream>
using namespace std;
int main()
{
char **p;
char *name[] = { "Basic", "Fortran", "C++", "Pascal", "Cobol" };
p = name + 1;
cout << *p << endl;
cout << **p << endl;
}
执行效果如图: