请教:我不大会使用指针做程序,很多时候,周围的人都说“这用指针比较方便”,但是我不用指针也可以完成,我不了解指针到底有什么优势,请指教!
楼主不喜欢玩指针的话,很适合用JAVA
指针,引用一本书里的话:
千万不要忘记了,当你用一个手指指向别人的时候,你手上的另外三个手指指向了你自己.-------多疑间谍的格言
[此贴子已经被作者于2006-8-16 13:42:58编辑过]
指针可以指向任何一块已经分配的存储空间。
其实,数组本身就是指针 + malloc。个人认为指针更灵活,对于许多问题的解释更清楚,有时,数组反而会让你糊涂。
但是,对于指针一定要注意,要让他指向一个分配的空间。
数组是一个较为顶层的应用,指针是一个底层的操作。顶层的操作让程序的出错概率减小,但应用起来不是很自如。
比如:
unsigned int a[10];
unsigned int *pointer = a;
a[10] = 0;
p[10] = 0;
前一行会检测出语法错误,而后一行不会。这就是顶层的好处。
同时,他也有不足。比如,你发现 a[10] 不够用了,需要 a[20],就不好办了,但你可以用 pointer + malloc/ralloc。
还有,在函数中,其实更容易看出数组的无力。
#include <stdio.h>
#include <string.h>
#define STRING_LENGTH 20
#define STRING_NUMBER 2
void Prinf(unsigned char array[], unsigned int n);
void main()
{
unsigned char str[STRING_NUMBER][STRING_LENGTH];
unsigned char ch = 'A';
unsigned int i = 0;
unsigned int j = 0;
for(i = 0; i < STRING_NUMBER; i ++)
{
for(j = 0; j < STRING_LENGTH; j ++)
str[i][j] = ch;
ch += 1;
}
Prinf(str, STRING_LENGTH * STRING_NUMBER);
while(1)
;
}
void Prinf(unsigned char array[], unsigned int n)
{
unsigned int i = 0;
for(i = 0; i < n; i ++)
{
printf("%c", array[i]);
}
printf("\n");
}