C语言中char*和char[]用法区别分析

本文实例分析了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.jb51.net));//其中n为要开辟空间的大小

这句话其实相当于:

char s[n];

定义的也是一个指向数组的指针,便可进行数组的下标操作

例子

#include

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语言程序设计的学习有一定的借鉴价值。

时间: 2014-09-14

前言 大家在学习或者使用Windows编程中,经常会碰到字符串之间的转换,char*转LPCWSTR也是其中一个比较常见的转换.下面就列出几种比较常用的转换方法.大家可以根据自己的需求选择相对应的方法,下面来一起学习学习吧. 1.通过MultiByteToWideChar函数转换 MultiByteToWideChar函数是将多字节转换为宽字节的一个API函数,它的原型如下: int MultiByteToWideChar( UINT CodePage, // code page DWORD d

看这样一段简单的程序: #include char* fun() { return "fun"; } int main() { printf("%s", fun()); return 0; } 这段程序可以正常run,但是最好不要这么做. 因为  直观上你返回了一个局部的东西出去.  你可以再外面定义这个常量,然后返回. 另外,字符串常量不可修改,而char*意味着要修改,故此最好加上const. 以上就是小编为大家带来的浅谈char

1.首先必须了解,string可以被看成是以字符为元素的一种容器.字符构成序列(字符串).有时候在字符序列中进行遍历,标准的string类提供了STL容器接口.具有一些成员函数比如begin().end(),迭代器可以根据他们进行定位. 注意,与char*不同的是,string不一定以NULL('\0')结束.string长度可以根据length()得到,string可以根据下标访问.所以,不能将string直接赋值给char*. 2.string 转换成 char * 如果要将string直接

复制代码 代码如下: //string --> const char string str2ch: str2ch.c_str(); //============================= //string --> char * //先转为 const char , 然后 转char * char TargetFile[strlen(TorrentFileNameDown.c_str())];    strcpy(TargetFile,TorrentFileNameDown.c_str(

C语言中判断一个char*是不是utf8编码 里我修改了一下, 纯ASCII编码的字符串也返回true, 因为UTF8和ASCII兼容 实例代码: int utf8_check(const char* str, size_t length) { size_t i; int nBytes; unsigned char chr; i = 0; nBytes = 0; while (i < length) { chr = *(str + i); if (nBytes == 0) { //计算字节数 i

复制代码 代码如下: #ifndef USE_H_      #define USE_H_ #include       #include       #include       using namespace std;      class CUser      {      public:          CUser();          virtual~ CUser();          char*

protobuf的Demo程序是 C++版本的protubuf有几种serialize和unSerialize的方法: 方法一: 官方demo程序采用的是 复制代码 代码如下: // Write the new address book back to disk. fstream output(argv[1], ios::out | ios::trunc | ios::binary); if (!address_book.SerializeToOstream(&output)) { cerr &l

string,CString,char*之间的转化 int 转 CString:CString.Format("%d",int);...............................string 转 CString CString.format("%s", string.c_str()); 用c_str()确实比data()要好. .......................................char* 转 CString CString.

首先解释下三者的含义 CString 是一种很有用的数据类型.它们很大程度上简化了MFC中的许多操作(适用于MFC框架),使得MFC在做字符串操作的时候方便了很多.需要包含头文件#include C++是字符串,功能比较强大.要想使用标准C++中string类,必须要包含#include // 注意是,不是,带.h的是C语言中的头文件.Char * 专门用于指以'\0'为结束的字符串. 以下

在做在线编程题目的时候,需要了解一下数据的输入格式.这样可以对数据处理有比较好的把握,不需要把太多的时间放在这个上面,注重主要的算法逻辑即可.这里总结一下,为之后笔试做个准备. 1.从终端输入的方式 Scanner类的使用方法: Scanner scanner = new Scanner(System.in); 从终端获取输入流,输入流传入Scanner初始化对象时,作为参数传递进去. Scanner类的重要几个方法: next方法(读取一个字符) 1.一定要读取到有效字符后才可以结束输入(要是

1.Calendar 转化 String Calendar calendat = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String dateStr = sdf.format(calendar.getTime()); 2.String 转化Calendar String str="2012-5-27"; SimpleDateFormat s

我们可以认为格林威治时间就是时间协调时间(GMT=UTC) GMT : 格林威治时间 UTC : 时间协调时间 1.time_t time_t time(time_t *t); 取得从1970年1月1日至今的秒数. time_t类型,这本质上是一个长整数( long ),表示从1970-01-01 00:00:00到目前计时时间的秒数,timeval则精确到毫秒 2.timeval timeval类型,这是一个结构体类型,struct timeval 头文件为 time.h struct tim

innodb这种引擎,与MYISAM引擎的区别很大.特别是它的数据存储格式等.对于innodb的数据结构,首先要解决两个概念性的问题: 共享表空间以及独占表空间.什么是共享表空间和独占表空间共享表空间以及独占表空间都是针对数据的存储方式而言的.共享表空间:  某一个数据库的所有的表数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在data目录下. 默认的文件名为:ibdata1  初始化为10M.独占表空间:  每一个表都将会生成以独立的文件方式来进行存储,每一个表都有一个.frm

1.字符串---------->jQuery对象 $(HTML字符串): $('

我是祖国的一朵小花

') 待添加列表 2.jQuery对象---------->DOM对象 下标选取法(原理:jQuery是DOM的数组形式):$("h2")[1] 使用.get(index)函数 3.字符串----------->DOM对象 写一个脚本函数 function parseDom(nodelist) { //nodelist是htm

有一点可以不用否认的,那就是当每个页面中中都需要调用同一个文件时,采用JS的文件会比HTML文件快,为了方便这2种代码之间的转化,网上有很多网站提供这样的服务,为了不用转化一下就网上转化,于是呼我找了个最简单的代码,可以轻松时间这2种代码之间的转变,演示地址为:http://www.bkye.com/tool/html-js.htm,如果您在看到演示后觉得还8错的说,可以看看下面的代码: HTML与JS互转工具 function change(){ txt.value="document.wri

c语言中 char怎样用,C语言中char*和char[]用法区别分析相关推荐

  1. c语言char有什么作用,C语言中char*和char[]用法区别分析

    本文实例分析了C语言中char* 和 char []的区别.分享给大家供大家参考之用.具体分析如下: 一般来说,很多人会觉得这两个定义效果一样,其实差别很大.以下是个人的一些看法,有不正确的地方望指正 ...

  2. C语言中char*和char[]用法区别分析

    本文实例分析了C语言中char * 和 char []的区别.分享给大家供大家参考之用.具体分析如下: 一般来说,很多人会觉得这两个定义效果一样,其实差别很大.以下是个人的一些看法,有不正确的地方望指 ...

  3. c语言 define和int,C语言中define与const的用法区别分析

    其实这个是困惑了我好久的问题,没想到在上机课做到的题里找到了答案--我的困惑是:#define与const到底有什么区别. 题目:  代码如下 复制代码 #define N 2 #define M N ...

  4. linux strcpy 用法,由Linux中管道的buffer,浅谈C语言中char类型字符串拷贝使用strcpy()和=赋值符号的区别...

    今天在写父子进程用两个单向管道通信时,出现了错误: Segmentation fault (core dumped) 打开core文件发现: 附上源码: 1 #include 2 #include 3 ...

  5. c语言中管道符作用,由Linux中管道的buffer,浅谈C语言中char类型字符串拷贝使用strcpy()和=赋值符号的区别...

    今天在写父子进程用两个单向管道通信时,出现了错误: Segmentation fault (core dumped) 打开core文件发现: 附上源码: 1 #include 2 #include 3 ...

  6. c语言中char是多少字节,c语言中char_char c = \'\\1\' 十进制是多少_c语言char

    网友求助:c语言中char_char c = \"\\1\" 十进制是多少_c语言char 问题 最佳答案 推荐答案 char一般默认是1个字节的无符号整型,范围0~255.如果是 ...

  7. python里char什么意思_C语言中char**是什么意思? 和char*有什么区别呀

    展开全部 意思62616964757a686964616fe59b9ee7ad9431333431353336:char ** 指向字符型指针的指针: 区别: char *字符型指针,指向一个字符: ...

  8. c语言中的printf函数_C语言中的printf()函数与示例

    c语言中的printf函数 C语言中的printf()函数 (printf() function in C) The printf() function is defined in the <s ...

  9. c语言中 amp 的作用,c语言中“amp;amp;”什么意思

    c语言中"&&"什么意思 在c语言中,"&&"是"与"."并且"的意思.它是逻辑运算符, ...

最新文章

  1. 改变自己从学习linux开始
  2. Ubuntu Linux系统下apt-get命令详解
  3. 抖音:我“弱”我有理
  4. 【经验】广西集体户口迁回农村原籍超级攻略
  5. Swift之深入解析闭包Closures的使用和捕获变量的原理
  6. 完美解决ArcGIS10.2和Erdas9.2软件冲突的方法:共存!
  7. 文档在线签名_为什么需要为文档和合同切换到在线签名
  8. asterisk使用SIP相互对接
  9. 场地测量的方法和程序_场地测量方案
  10. mysql 重命名索引_mysql增删改字段,重命名替换字段
  11. Nginx 动态模块
  12. 【UE4】解决局域网联机游戏连接不上的问题
  13. 高通Snapdragon Sensor Core(SSC)笔记
  14. 缺省值及属性(Python)
  15. 慕课网风袖小程序 一一第一阶段
  16. 【编程】shell和python实现:如何做到让一个程序每1秒去做一件事情
  17. Python递归获取指定文件夹下的所有文件夹、文件
  18. 人工智能、物联网时代,嵌入式思维的应用
  19. mysql建表及DML语句
  20. GRUB (简体中文)

热门文章

  1. [C#]解决生成的缩略图模糊的问题
  2. 黄聪:C#用正则表达式获得指定开始和结束字符串中间的一段文本
  3. 非营利组织Eatbch展示了每一个小的微交易是如何起作用的
  4. 比特币官网管理者Cobra认可BCH支付属性
  5. eclipse安装反编译插件(附jad下载)
  6. 《Adobe Flash CS5中文版经典教程》——1.5 在“时间轴”中组织图层
  7. TYVJ P1053 字符串的展开 Label:字符 水
  8. linux命令学习——file
  9. mysql中不同事务隔离级别下数据的显示效果--转载
  10. 二.ubuntu14.04 3D特效设置