C语言是需要经常用才知道哪些东西不懂,才会有进步。最近突然发现自己对字符串常量,字符串指针等一些概念越来越模糊,今天就把最近的一些模糊不清的事情上网收集等方式来总结一下,加深自己的理解。
1. char a【size】 和 char *p = “abcdef” 的区别
首先要明白a是一个字符数组,系统为a在栈去分配size个字节的空间,而p是一个指针,其实就是一个指向内容不可以变化的指针,常量指针。系统在栈区分配四个字节,而后面的字符串常量系统在静态变量区分配7个字节的空间包括字符串结束符'/0'.所以这个字符串不能按字符改变,但数组a却可以改变。
2. 对于一个指针,前面加上关键字const后可以有三种不同情况,常量指针,指向常量的指针,指向常量的常量指针。常量指针,即就是指针本身是一个常量,不可以对该指针进行++ 或者--操作。