请教:我不大会使用指针做程序,很多时候,周围的人都说“这用指针比较方便”,但是我不用指针也可以完成,我不了解指针到底有什么优势,请指教!
楼主不喜欢玩指针的话,很适合用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");
}