char *a 与char a[] 的区别
来源:互联网 发布:大数据300a基金001420 编辑:程序博客网 时间:2024/05/29 12:17
char *a = "hello" 中的a是指向第一个字符‘a'的一个指针
char a[20] = "hello" 中数组名a也是执行数组第一个字符‘h’的指针
但二者并不相同:
看实例:把两个字符串相加:
结果:
对比:
结果:
把字符串加到指针所指的字串上去,出现段错误,本质原因:*d="0123456789"存放在常量区,是无法修的。而数组是存放在栈中,是可以修改的。两者区别如下:
一. ”读“ ”写“ 能力
- char *a = "abcd"; 此时"abcd"存放在常量区。通过指针只可以访问字符串常量,而不可以改变它。
- 而char a[20] = "abcd"; 此时 "abcd"存放在栈。可以通过指针去访问和修改数组内容。
二. 赋值时刻
- char *a = "abcd"; 是在编译时就确定了(因为为常量)。
- 而char a[20] = "abcd"; 在运行时确定
三. 存取效率
- char *a = "abcd"; 存于静态存储区。在栈上的数组比指针所指向字符串快。因此慢
- 而char a[20] = "abcd"; 存于栈上。快
另外注意:
char a[] = "01234",虽然没有指明字符串的长度,但是此时系统已经开好了,就是大小为6-----'0' '1' '2' '3' '4' '5' '\0',(注意strlen(a)是不计‘\0’)
看一结构中出现的同样的问题:
这样红色部分在调用Init函数时会出现“Segment Default", 因为此时 指针n是静态的,只有“读”的本事,不可以改变。
0 0
- char *a 与char a[] 的区别
- char *a 与char a[] 的区别
- char *a 与char a[] 的区别
- char *a 与char a[] 的区别
- char *a 与char a[] 的区别
- char *a 与char a[] 的区别
- char *a 与char a[] 的区别
- char *a 与char a[] 的区别
- char *a 与char a[] 的区别
- char *a 与char a[] 的区别
- char *a 与char a[] 的区别
- char *a 与char a[] 的区别
- char *a 与char a[] 的区别
- char *a 与char a[] 的区别
- char* a与char a[]的区别,const char* a与char* const a的区别
- char *a 与char a[] 的区别和char** argv与char *argv[]区别
- 深入 理解char * ,char ** ,char a[ ] ,char *a[] 的区别
- char* a和 char a[]的区别
- eclipse导入Maven工程Failure to transfer org.apache.maven.shared:maven-mapping:pom:1.0***问题的处理
- 黑马程序员————C语言结构体
- 二进制中1的个数
- Linux学习笔记(二):cd命令的使用
- HDU 1181 变形课 BFS
- char *a 与char a[] 的区别
- Climbing Stairs
- why are U rejecting me
- 面试中的几道C/C++基础题
- UIResponder事件处理 _Lenny Kwok
- [Vijos 1279] Leave-绿光 · 模拟
- 动态规划之01背包问题(最易理解的讲解)
- 如何找出数组中出现次数为奇数次的唯一元素
- HDU 1423 Greatest Common Increasing Subsequence 最长公共递增序列