c语言中字符数组和字符指针的区别
来源:互联网 发布:java界面设计web控件 编辑:程序博客网 时间:2024/04/25 19:57
在学习c语言的过程中,我们总会遇到许多很相似的,难以分辨的事物,有时犯了错也找不出来,今日偶然看到一点关于字符指针变量和字符数组的区别,希望引以为鉴
字符数组,其实就是字符串,在c语言中,字符数组和字符串视作相同的,字符指针的长度不在于你定义时的指针长度,而是结束符\0存在的位置.你的字符串只有十个字符,那么\0就会出现在第十一个位置视作结束,我们在字符数组的赋值时,只能对子符数组的单个元素赋值,不能对整个数组赋值.例如
char str[]="hello c" /*正确*/
char srt="hello c" /*错误*/
其实,也可以直接对字符数组赋值,要用到strcpy函数,例如
我们把hello.c复制到str子符数组中,要打出
strcpy(str,"hello.c");
才可以
字符指针
我们在对字符指针赋值时,可以直接赋值,例如
char *str;
str="hello.c";
这是完全可以的
在深究,还有很多不同,虽然这两个都是指向字符串的指针,但是
<li class="alt"><span><span class="datatypes">char</span><span> ss[]=</span><span class="string">"C++"</span><span>; </span></span></li><li class=""><span>ss[0]=<span class="string">'c'</span><span>; </span><span class="comment">// 合法</span><span> </span></span></li><li class="alt"><span><span class="datatypes">char</span><span> *p=</span><span class="string">"C++"</span><span>; </span></span></li><li class=""><span>p[0]=<span class="string">'c'</span><span>; </span><span class="comment">// 合法但不正确</span><span> </span></span></li>
之所以不正确,是因为这两种对字符数组操作不同
使用char *p="C++"语句后,编译器在内存的文字常量区分配一块内存,保存”C++“这一字符串字面值,然后在栈上分配内存保存p,p的内容为"C++"的地址。p[0]='c'试图修改常量”C++“,程序当然就会崩溃了。而char ss[]="C++"语句,定义了一个数组,编译器为其在栈上分配了内存空间,因而可以进行修改操作
总结如下
(1)char ss[]定义了一个数组,ss可认为是一个常指针,ss不可改变,但ss指向的内容可以发生改变。
(2)char *p定义了一个可变指针,p可以指向其它对象。但对于char *p=”abc“这样的情况,p指向的是常量,故内容不能改变
并且,函数类型 *p=&a表示p的初值是a的地址,不是*p初值是a的地址
- c语言中字符数组和字符指针的区别
- c语言中字符指针与字符数组的区别
- C语言 字符指针和字符数组的区别
- C语言字符指针和字符数组的区别
- C语言中字符数组和指向字符数组的指针的区别
- c语言中字符数组和字符指针的区别:(一句话,一旦要修改就用字符数组)
- C语言中 字符数组和字符指针分析
- C语言字符指针和字符数组
- 黑马程序员 C语言的字符数组和字符指针
- c语言的字符数组和字符指针
- C语言中关于字符数组和指针数组
- 字符数组和字符指针的区别
- 字符指针和字符数组的区别
- 字符数组和字符指针的区别
- 字符数组和字符指针的区别
- 字符数组和字符指针的区别
- 字符数组和字符指针的区别
- 字符指针 和 字符数组的区别
- 队的建立和排序
- UI 画图下(画板画图)
- SIFT(Scale-invariant feature transform, 尺度不变特征转换)特征
- C#中使用Oracle
- Android Studio环境下关联Android源码
- c语言中字符数组和字符指针的区别
- CPU与内存管理
- 利用Word Embedding自动生成语义相近句子
- POJ 1002 487-3279(排序)
- 【PHP项目部署四】Apache、PHP、Mysql整合
- Fisher Vector(FV)向量
- 腾讯后台开发面试总结
- EM算法小结(对于GMM和pLSA)
- Linux Is Not Matrix番外篇——good luck have fun