浅谈数组与指针表示字符串的区别
来源:互联网 发布:区域生长算法详解 编辑:程序博客网 时间:2024/05/20 03:44
指针表示字符串
/1/指针变量所占内存空间根据操作系统的位数会发生变化,同一位数操作系统下是固定的,64位操作系统占8个字节;
/2/当指针变量指向字符串时,不能改变字符串的值,因为字符串只存在常量区,常量区的值不能被改变;
/3/指针可以随意指向任意字符串;
数组表示字符串
/1/同一操作系统下,数组所占内存空间不是固定的,可以人为变大变小;
/2/用数组表示字符串,数组定义的字符串是可以改变的,通常用字符串处理函数
strcpy(char*, const char *)来改变数组存储的字符串,并且字符串既存在常量区,也存在栈区。
下面举个例子来具体说明两者的区别:
#include <stdio.h>
#include<string.h>
intmain(int argc, const char * argv[]) {
char arr[] ="123";
char *p ="123";
printf("%p\n%p\n",arr,p);
printf("%s\n%s\n",arr,p);
printf("%p\n%p\n",&arr,&p);
printf("====================\n");
strcpy(arr,"456"); //改变数组arr存储的字符串;
p = "456"; //改变指针p指向的字符串;
printf("%p\n%p\n",arr,p);
printf("%s\n%s\n",arr,p);
printf("%p\n%p\n",&arr,&p);
return 0;
}
打印结果:
0x7fff5fbff7dc //数组arr的地址;
0x100000f6c //指针p指向常量区“123”的地址;
123 //“123”存在栈区数组arr内,但实际是从常量区复制过来的,可以改变;
123 //“123”存在常量区,不可改变;
0x7fff5fbff7dc // 数组arr的地址;
0x7fff5fbff7d0 // 指针p的地址,存在栈区;
====================【下释义同上】
0x7fff5fbff7dc
0x100000f94
456
456
0x7fff5fbff7dc
0x7fff5fbff7d0
- 浅谈数组与指针表示字符串的区别
- 字符串与char数组的指针表示
- 浅谈数组与指针的区别
- 字符串数组与字符串指针的区别
- 字符串指针与字符串数组的区别
- 数组用指针表示时的区别与相同
- 字符串指针与字符数组的区别
- 字符串指针与字符数组的区别
- 字符串指针与字符数组的区别
- 字符串指针与字符数组的区别
- 字符串指针与字符数组的区别
- 字符串指针与字符数组的区别
- 字符串指针与字符数组的区别
- 字符串指针与字符数组的区别
- 字符串指针与字符数组的区别
- 字符串指针与字符数组的区别
- 字符串指针与字符数组的区别
- 字符串指针与字符数组的区别
- breeze densematrix 基本操作
- Quintus小游戏制作之Beta(一)
- 欢迎使用CSDN-markdown编辑器
- Eclipse使用中的奇奇怪怪问题
- NYOJ 找数达人 (找n个数构成m是否存在)
- 浅谈数组与指针表示字符串的区别
- Android视频播放开源库vitamio
- LeetCode_105Construct Binary Tree from Preorder and Inorder Traversal
- git操作分支
- System.Configuration.ConfigurationErrorsException: An error occurred creating the configuration sect
- 注入式开发
- 继承学习日志
- 关于a标签的下载功能
- navicat的注册和安装问题