指针与数组关系浅议

    技术2022-05-12  4

    先看以前写的一段程序:

    其主要功能是实现字符串的原地转换:

    char* Revert(char *source) { int length = strlen(source); int start = 0; int end = length - 1; while(start < end) { char temp ; temp = *(source + start); *(source + start) = *(source + end); *(source + end) = temp; start++; end --; } return source; } int _tmain(int argc, _TCHAR* argv[]) { char * source = "Hello,world"; char *result = Revert(source); }

     

    开始不知道拿错了,后来发现可能是函数中对指针操作有误:

      C++/C 程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的。   数组要么在静态存储区被创建 (如全局数组) , 要么在栈上被创建。 数组名对应着 (而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。   指针可以随时指向任意类型的内存块,它的特征是“可变” ,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。

     

    这里摘录《高质量C++/C编程》说明:

     


    最新回复(0)