首页 > 代码库 > C/C++ char* arr与char[] arr的区别
C/C++ char* arr与char[] arr的区别
写作日期:2016.08.31
交流qq:992591601
用了几天时间复习了下C语言。对于C语言的字符串操作有些不习惯,于是作为练习,写下了下面这样错误的程序:
#include <stdio.h>#define MAX_STR_SIZE 100void copy_string(char* from, char* to) { while (*to++ = *from++);}void swap_strs(char* str1, char* str2) { char tmp[MAX_STR_SIZE]; copy_string(str1, tmp); copy_string(str2, str1); copy_string(tmp, str2);}void sort_strs_by_ascii(char* arr[3]) { if (strcmp(arr[0], arr[1]) < 0) swap_strs(arr[0], arr[1]); if (strcmp(arr[1], arr[2]) < 0) swap_strs(arr[1], arr[2]); if (strcmp(arr[0], arr[1]) < 0) swap_strs(arr[0], arr[1]);}int main() { char* arr[3] = {"dd", "aa", "cc"}; sort_strs_by_ascii(arr); for (int i = 0; i < 3; i++) printf("%s\n", arr[i]); return 0;}
这段程序写得当然不怎么样,主要是为了练习C语言,特意去使用一些东西,例如C字符串指针的,指针数组。
程序中的数组的中存放三个字符串指针。将该数组作为参数来通过sort_strs_by_ascii方法排序。但在字符串操作过程中报错。
之后我才了解,char* arr这样的字符串指针,指向的值是存放在常量区的,不可改写。但该指针可以随意指向其它的地址空间。
而char arr[]这样的数组指针虽然本质也是指针,指针指向的内容却是固定在数组的内存空间的。但该数组空间里的内容是可以改写的。
C/C++ char* arr与char[] arr的区别
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。