数组和指针的区别、字符数组和字符串指针区别
来源:互联网 发布:企业即时聊天软件 编辑:程序博客网 时间:2024/06/05 18:57
1、数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。而指针是动态变换的,它指向的指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。
2、注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。
字符数组和字符串指针:
1、字符指针可以指向一个字符串。
这里要注意字符指针与字符数组之间的区别。例如,有说明语句:
char string[ ]="This is a string.";
此时,string是字符数组,它存放了一个字符串。
字符指针str与字符数组string的区别是:str是一个变量,可以改变str使它指向不同的字符串,但不能改变str所指的字符串常量。string是一个数组,可以改变数组中保存的内容。
2、字符数组由若干个元素组成,每个元素中存放字符串的一个字符,而字符指针变量中存放的是字符串的首地址。
3、初始化方式不同。对字符数组初始化要用static存储类别,在编译时进行。而对字符指针变量初始化不必加static,在实际执行时进行。
4、赋值方式不同。对字符数组不能整体赋值,只能转化成份量,对单个元素进行。而字符指针变量赋值可整体进行。
例如:
char s[10];
s= /"C++/";/*错,s是常量,怎能被赋值*/
5、在定义一个字符数组时,编译时即已分配内存单元,有确定的地址。而定义一个字符指针变量时,给指针变量分配内存单元,但该指针变量具体指向哪个字符串,并不知道,即指针变量存放的地址不确定。例如:
char a[10];
char *p;
scanf(/"%s/",s);/*正确*/
scanf(/"%s/",p);/*非常危险,p的值动态*/
6、字符指针变量的值可以改变,字符数组名是一个常量,不能改变。例如,有简单程序:
main()
{
char s=/"china man/"
s+=6;
printf(/"%s/",s);
}
运行结果:man
- 字符串指针和字符数组的区别
- 字符串指针和字符数组的区别
- 字符指针和指针数组的区别
- 字符数组和字符串指针区别
- 字符串截取以及字符数组和字符指针的区别
- 数组和指针的区别、字符数组和字符串指针区别
- 字符数组和字符指针的区别
- 字符指针和字符数组的区别
- 字符数组和字符指针的区别
- 字符数组和字符指针的区别
- 字符数组和字符指针的区别
- 字符数组和字符指针的区别
- 字符指针 和 字符数组的区别
- 指向字符串的指针 和 字符数组的区别
- 字符串指针和字符数组的又一区别
- 使用字符串指针变量和字符数组的区别
- 字符串指针和字符串数组的区别
- 字符串数组和字符串指针的区别
- 实测 c# .net 中 httpwebrequest 和 httpclient 性能 区别 对比
- Linux下MySQL的简单使用(3)
- JAVA数组
- 面对对象之封装及其好处
- CS231n课程笔记--线性分类
- 数组和指针的区别、字符数组和字符串指针区别
- Servlet中的web.xml
- Redis安装使用
- 【kmp算法next数组-串的最小循环节/循环周期】Period HDU
- 汇编语言(第三版)检测点重点题目整理
- 20152016-acmicpc-neerc-northern-subregional-contest J:Journey to the "The World's Start"(单调队列+DP+二分)
- PAT 甲级 1094. The Largest Generation (25)
- OSI七层模型与TCP/IP五层模型
- JavaSe复习笔记