指针字符串 和 数组字符串的区别
来源:互联网 发布:国外网络流行模式 编辑:程序博客网 时间:2024/05/16 19:54
1:字符数组是由若干个元素组成, 每个元素放一个字符, 字符指针变量中存放的是一个地址(字符串的第一个字符的地址), 绝不是将字符串放到字符指针变量中。
2:赋值方式:
对字符数组只能对各元素赋值, 不能用以下办法对字符数组赋值
char str[14];
str = "i love china";
对字符指针变量, 可以采取下面的方法赋值
char *str;
str = "i love china";// 注意: 赋给str的不是字符, 而是字符串的第一个元
素的地址。
3:对字符指针变量赋初值:
char*str = "i love china";
等价于 char*str;
str = "i love china";
对字符数组初始化:
char str[14] = {"i love china"};
不等价于 char str[14];
str[] = "i love china";// 数组可以在定义的时候整体赋初值,
但不能在赋值语句中整体赋值。
4:定义字符数组, 编译时为他分配内存单元,有确定的地址
定义字符指针变量,给指针变量分配内存单元, 在其中可以放一个字符变量的地址
也就是说,该指针变量可以指向一个字符型数据, 但如果未对他赋予一个地址值,
则他并未具体指向一个确定的字符数据。
例如:
char str[10];
scanf("%s", str);
是可以的。而常有人用下面的方法:
char *str;
scanf("%s", str);
虽然有时能运行, 但这是危险的, 不提倡;
char*str, a[100];
str = a;
scanf("%s", str);// 先使str有确定值指向一个数组的首元素,然后输入一
个字符串, 把他存在从该地址开始的若干单元中;
5:指针变量的值是可改变的
例如:
#include<stdio.h>
void main()
{
char *a = "i love china";
a = a +7; // 间接表示a[7]
printf("%s\n", a);// 从a[7]开始往后面输直到'\0';
printf("%c", a[4]); //a[4]是按*(a+4)处理, 即从a当前指的元素下移4个单
位输出其值;
}
运行结果:china
指针变量的值是可以变化的, 而数组名代表地址, 但它是常量, 不能改
变的
特殊:定义一个指针变量, 并使它指向一个字符串, 就可以下标形式引用
指针变量所指的字符串中的字符
0 0
- 字符串指针和字符串数组的区别
- 字符串数组和字符串指针的区别
- 字符串指针和字符串数组的区别
- 指针字符串 和 数组字符串的区别
- 字符串数组 和 字符串指针 的区别
- 字符串指针和字符数组的区别
- 字符串用指针和数组的区别
- 字符串指针和字符数组的区别
- 指针和数组之字符串的区别
- 关于字符串常量指针和字符串数组的区别
- C语言指针字符串和数组字符串的一点区别
- 指针定义字符串和数组定义字符串的区别
- 字符串数组和字符串指针的区别联系
- 字符串数组与字符串指针的区别
- 字符串指针与字符串数组的区别
- 字符串数组和字符串指针的差别
- 字符串的数组和指针
- 指向字符串的指针 和 字符数组的区别
- 编程之美--不要被阶乘吓倒
- 运算符重载
- vc++MCF/C++/C中怎样让应用程序获得或以管理员权限运行 ,ShellExecuteEX编程 --- 获取管理员权限
- 在局域网内能提高网速的办法
- resuse space
- 指针字符串 和 数组字符串的区别
- POSIT算法
- domino服务器ID验证字过期重新验证的方法
- ios防止按钮多次点击
- openstack scheduler 配置参数说明
- java内部类总结
- Quality Settings说明
- HDU 4958 DP
- hdu 4630 No Pain No Game(树状数组离线操作)