最近读一本C书时,有些基本概念让我感到困惑。
它说:指向字符串文字的变量不能用于更改字符串的内容。
据我所知,还有字符文字和整数文字,它们的情况如何?它们也不能更新吗?如果可以,您可以举个例子吗?
此外,文字和数组有什么区别?像字符数组,字符串文字,它们实际上是一件事吗?
我该如何称呼下面的变量?整数数组?整数文字?
int contestants[] = {1, 2, 3};
我已经总结了一些示例,但我仍然有些混乱:
char s[] = "How big is it?"; //s is an array variable
char *t = s; //t is a pointer variable to a string literal "How big is it?"
字符串文字:“ ABC”
字符文字:'a'
整数文字:1
我对这4个项目感到困惑:字符,数组,字符串,文字。我还是很困惑。
字符数组和字符串文字相同吗?
字符数组和数组文字是否相同?
最佳答案
文字是程序文本中表示值的令牌。有字符串文字(如"123"
),字符文字(如'a'
)和数字文字(如7
)。
int contestants[] = {1, 2, 3};
在上面的程序片段中,有三个文字
1
2
和3
,没有其他文字。特别是contestants
和{1, 2, 3}
都不是文字。值得注意的是,C标准仅在引用字符串文字时使用文字文字。另一种正式称为常数。但是您可能在所有地方都将它们称为文字,因此我在此处将它们包括在内。 “整数文字”和“整数常量”是同一回事。
字符串文字也是程序中的对象(一条数据,一个存储区域),与以前意义上的字符串文字相关联。这段数据是一个字符数组。并非每个字符数组都是字符串文字。没有
int
数组是文字。指针可以指向字符串文字,但不能指向字符文字或整数文字,因为后两种不是对象(没有与之关联的存储)。指针只能指向一个对象。您不能将下注者指向文字5。因此,不会出现是否可以修改此类问题的问题。
char* p = "123";
在上面的程序片段中,
"123"
是文字,p
指向它。您不能修改p
指向的对象。char a[] = "123";
在上面的程序片段中,
a
是一个字符数组。它使用字符串文字“ 123”初始化,但它本身不是文字,可以自由修改。int i = 5;
上面的
5
是文字,而i
不是。 i
用文字初始化,但它本身不是一个。int k[] = {1, 2, 3};
int* kp = k;
在上面的行中,就像在前面的行中一样,数组
k
或其元素都不是文字。它们只是用文字初始化。 kp
是指向数组第一个元素的指针。可以使用thos指针更新数组。 kp[1] = 3;
关于c - 这4个项目之间有什么区别:字符,数组,字符串,文字。在C中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29405410/