sponsored links

C中 char *s 和 char s 有什么区别

问题:

在C语言中,我们可以这样

char s[]="hello";

或者

char*s ="hello";

那么这两个到底有什么不同?


解答:

区别如下:

char*s ="Hello world";

会把Hello world放进内存的只读部分,声明一个指针s指向它。任何对这个只读内存的写操作都是非法的。然而执行下面语句:

char s[]="Hello world";

会把字符串放进内存的一个只读区域,然后把这个字符串复制到一个栈中新分配的内存。因此,

s[0]='J';

是合法的。



英文原地址:

what-is-the-difference-between-char-s-and-char-s-in-c

Tags:
  • 程序员面试宝典中的一个错误 char * b=(char *)a
    本文转自http://blog.csdn.net/race604/article/details/6725475   判断下面函数的输出   [cpp] view plaincopyprint? 1 void main()   2 {   3     unsigned int a = 0xFFFFFFF7;   4     unsigned char i = ...
  • MFC中CString转换成char数组的问题
    由于结构体中用到联合体(联合体需要确定分配内存分配大小)或其它因素,需要用char数组来保存字符串,但是在MFC中一般都是用CString来存放字条串.关于它们之间的转换,在VS2008中有时会出现异常情况.在MSDN是这样写的:     CString orig("Hello, World!");     // Convert to a ...
  • 批量替换数据库中所有用户数据表中字段数据类型为char和varchar到nvarchar的脚本
    解决问题:字段类型为char的总是占用指定字节长度(末尾好多空白符号),varchar数据类型长度一个汉字占2个字节,内容存储为中文的字段个人建议全部使用nvarchar.操作说明:打开SQL Server Management Studio,选中你要更新字段类型的数据库,点新建查询菜单,执行下面的语句即可.详细代码:--批量替换数据库中所有用户数据表中字段 ...
  • 去除指定表中数据类型是VARCHAR,CHAR,NVARCHAR的字段值中的不可见字符
    去除指定表中数据类型是VARCHAR,CHAR,NVARCHAR的字段值中的不可见字符        --作用:去除指定表中数据类型是VARCHAR,CHAR,NVARCHAR的字段值中的不可见字符--注意:此处只去掉前后的不可见字符,不包括中间的字符,而且没有区分中文--有兴趣的可以自己加个判别的中文,其实也很简单的,就是限定一个字符的范围就可以了--日期 ...
  • c++中的 string 与 char*
    c++ 中的string与char* 前两天写了一个程序,其中一下段是这样的: char* name; cout<<"请输入name:"; cin>>name; 当运行的时候出现了段错误. 这样写在编译的时候是通过的,说明语法上是没有什么错误的. 很明显,能从语句上看出,我的意图是想用 name来保存一个字符串 . ...
  • MFC中CString转const char *
    CString转const char *是一件麻烦事,但是在做项目中经常遇到,所以这里做个笔记. //CString转const char* 麻烦 LPCTSTR p=pathName.GetBuffer(); DWORD dwMinSize; dwMinSize=WideCharToMultiByte(CP_ACP,NULL,p,-1,NULL,0,NUL ...