本文实例分析了C语言中char* 和 char []的区别。分享给大家供大家参考之用。具体分析如下:

一般来说,很多人会觉得这两个定义效果一样,其实差别很大。以下是个人的一些看法,有不正确的地方望指正。
本质上来说,char *s定义了一个char型的指针,它只知道所指向的内存单元,并不知道这个内存单元有多大,所以:
当char *s = "hello";后,不能使用s[0]='a';语句进行赋值。这是将提示内存不能为"written"。
当用char s[]="hello";后,完全可以使用s[0]='a';进行赋值,这是常规的数组操作。
若定义:
char s[] = "hello";
char *p = s;
也可以使用p[0] = 'a';因为这是p ==s,都是指向数组的指针。
下面看另外一种定义:
char *s = (char *)malloc(n(www.));//其中n为要开辟空间的大小
这句话其实相当于:
char s[n];
定义的也是一个指向数组的指针,便可进行数组的下标操作
例子
#include <stdio.h>
int main(int argc, char* argv[]) {
char* buf1 = "this is a test";
char buf2[] = "this is a test";
printf("size of buf1: %d\n", sizeof(buf1));
printf("size of buf2: %d\n", sizeof(buf2));
return 0;
}
结果是:
$ > ./main
size of buf1: 4
size of buf2: 15
相信本文所述对大家C语言程序设计的学习有一定的借鉴价值。
相关推荐:
Flex Data Binding详解
C# TreeView控件使用代码
php self,$this,const,static,-&gt;的使用
CSS鼠标悬停菜单 图片交换技术实现
jquery text()要注意啦
Nginx0.5.33+PHP5.2.5(FastCGI)搭建胜过Apache10倍的Web服务器
as3 rollOver or mouseOver使用说明
sqlserver 字符串分拆 语句
MSSQL 计算两个日期相差的工作天数的语句
jquery ajax 登录验证实现代码
Apache 虚拟目录和默认首页的设置
PHP 文件上传源码分析(RFC1867)
C# 面向对象的基本原则
用document.documentElement取代document.body的原因分析
ASP.NET Web应用程序的安全解决方案浅析
jquery animate 动画效果使用说明
文字来回上下移动或跳动的代码
win2003 iis 404 设置方法与小技巧
Apache 支持CGI程序和SSI程序的设置方法
php 代码优化的42条建议 推荐
asp 获取url函数小结
.net动态显示当前时间(客户端javascript)
asp.net服务器上几种常见异常的解决方案.
asp.net cookie的读写实例
Oracle中sys和system的区别小结
从Web查询数据库之PHP与MySQL篇
正则表达式 传智播客学习
javascript GUID生成器实现代码
Win2003 Server 安全的个人Web服务器
传智播客学习之java 反射
Javascript 定时器调用传递参数的方法
javascript 判断某年某月有多少天的实现代码 推荐
Jquery操作Select 简单方便 一个js插件搞定
asp.net 中国身份证号码验证代码 非正则
js loading加载效果实现代码
asp.net 页面转向 Response.Redirect, Server.Transfer, Server.Execute的区别
xhEditor的异步载入实现代码
FckEditor 中文配置手册
Mootools 1.2教程 选项卡效果(Tabs)
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
JS 用6N±1法求素数 实例教程
Jquery 表单取值赋值的一些基本操作
Mootools 1.2教程 输入过滤第二部分(字符串)
php面向对象全攻略 (十) final static const关键字的使用
asp.net 验证码生成和刷新及验证
让Firefox支持event对象实现代码
IE Firefox 使用自定义标签的区别
php 3行代码的分页算法(求起始页和结束页)
PHP 木马攻击的防御设置方法
ASP.NET 在线文件管理