C语言char s[] 和 char *s的差别

C语言char s[] 和 char *s的差别,以下这个回答解说的非常清晰。

The difference here is that

char *s = "Hello world";

will place Hello world in the read-only parts of the memory and making s a pointer to that, making any writing operation on this memory illegal. While doing:

char s[] = "Hello world";

puts the literal string in read-only memory and copies the string to newly allocated memory on the stack. Thus making

s[0] = ‘J‘;

legal.

来自  http://stackoverflow.com/questions/1704407/what-is-the-difference-between-char-s-and-char-s-in-c

时间: 2024-11-05 09:45:46

C语言char s[] 和 char *s的差别的相关文章

C语言char s[] 和 char *s的区别

C语言char s[] 和 char *s的区别,下面这个回答讲解的很清晰. The difference here is that char *s = "Hello world"; will place Hello world in the read-only parts of the memory and making s a pointer to that, making any writing operation on this memory illegal. While do

Java语言中的字符char可以存储一个中文汉字吗为什么呢

Java语言中的字符char可以存储一个中文汉字吗?为什么呢? · 可以.因为Java语言采用的是Unicode编码.Unicode编码中的每个字符占用两个字节.Char储存的是一个字符(两个字节),中文也是占的两个字节 · 所以,Java中的字符可以存储一个中文汉字 原文地址:https://www.cnblogs.com/lcs-java/p/8486984.html

C语言scanf与get char,gets的区别

C语言scanf与get char,gets的区别 1.scanf() scanf是C语言的格式输入函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息.可以读入任何固有类型的数据并自动把数值变换成适当的机内格式. 在这里我想 列下一个'格式化说明符'的表来自于下面这个链接 (https://blog.csdn.net/21aspnet/article/details/174326) (A)                格式化说明符 格式字符           说明 %a 

C语言执行时报错“表达式必须是可修改的左值,无法从“const char [3]”转换为“char [120]” ”,原因:字符串不能直接赋值

解决该问题的方法:使用strcpy函数进行字符串拷贝 原型声明:char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 和 #include <stdio.h> 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串. 返回指向dest的指针. 1 // testArray.cpp :

char *p 与char p[] 比较

所有的字符窜常量都被放在静态内存区 因为字符串常量很少需要修改,放在静态内存区会提高效率 例: char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; const char *str6 = "abc";

深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const p

由于没有const*运算,const实际上修饰的是前面的char*,但不能在定义时转换写成 const(char *)*p,因为在定义是"()"是表示函数. 三.深入理解7种组合 (0)程序 在执行时为其开辟的空间皆在内存(RAM)中,而RAM里的内存单元是可读可写 的:指针只是用来指定或定位要操作的数据的工具,只是用来读写RAM里内存单元的工作指针 .若对指针不加任何限定,程序中一个指针可以指向RAM中的任意位置(除了系统敏感区,如操作系统内核所在区域)并对其指向的内存单元进行读和写

char数组与char指针

1.以字符串形式出现的,编译器会在结尾自动添加\0,思考,为什么? 存在的C语言方法,如strlen(s),计算字符串的长度,其中s指针.strlen要计算字符串长度,必须知道哪里是结尾,因此使用\0表示结尾.只有字符数组才有\0的概念,其它类型(int)的数组没有这个概念.因为其他类型的数组或者指针,没有strlen这种方法. 那么问题来了,int数组如何计算长度呢?如int a1 = {3,7,9,}; 使用sizeof(a1)/sizeof(int). 2.数组可以在栈上分配,也可以在堆上

C语言中char和unsigned char的区别

在C中,默认的基础数据类型均为signed,如定义变量为int,long等,都为有符号的.如果要定义无符号类型,必须显式地在变量类型前加unsigned. char在我所用的linux中一般都是8位一个字节,表示范围为-128~127. unsigned char的表示范围为0~255. 而ASCII的最大值是127.因此我们如果使用char去表示字符,那么char和unsigned char是没有区别的. 当然如果去表示超过127的数,那么就会差别的. 但是看过别人的一个博客,里面有指出,把一

char 与 unsigned char的本质区别

在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别. 首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,因此char能表示-127~127,unsigned char没有符号位,因此能表示0~255,这个好理解,8个bit,最多256种情况,因此无论如何都能表示256个数字. 在实际使用过程种有什么区别呢?主要是符号位,但是在普通的赋值,读写文