字符数组名称、未命名字符串和字符指针之间有什么区别?

发布于 科技 2024-02-25
9个回答
  1. 匿名用户2024-01-25

    你学过C语言吗?

    首先:和ch有什么关系,str是一个指针,ch,是一个数组的第一个地址,虽然这两个地址可以是同一个地址,但是它的含义却大不相同,ch不能用数组的名称给它赋值,定义大小后,就想想你给10个孩子糖, 你不能只给第一个,然后其他孩子会不理你,我不是说你也明白。

    2.让我们来谈谈 *str 与 str:

    char *str;char str;这两个是什么意思?

    显然,*str 和 str 的意思是一样的,即变量的值。 让我们回顾一下。

    char *str;知道 *str,那么 str 很容易做到,我会告诉你 *and& 之间的关系,还有:

    p=p;也许你又在问,&&&p 是什么意思? 该死的,你有多少个防盗门? &&&; 逻辑错误; 这是地址运算符,没什么好说的; 知道为什么 *str='s';str="string";再添加一点"string"任务是他是字符串的第一个地址(我想你知道);

    cout<<*str 输出 s,cout<3最后,我会给你一个很好的方法来解决这个问题:

    从后到前理解(只是师傅的陈述,呵呵,抄袭):

    const char* p;指向 char const 的指针;

    char const *p;同上,一个意思。

    char* const p;指向 const char* 的指针;

    const char* const p;常量 p 指向常量字符地址。

    const pointer to const char*.

    好吧,这不关我的事。

  2. 匿名用户2024-01-24

    ch 等效于无法修改地址的指针,指向数组的第一个元素。

    ch 不能无效,但可以初始化,可以这样声明。

    char ch[10] = ;

    您可以将所有元素留空。

    str 还没有分配空间,不能直接存储数据,分配空间后也可以使用 *str=,但只表示一个字符。

    简单来说,ch 是一个不能修改的指针,str 是可以修改的"string"这是一个字面上的常量,它是一个'\0'末尾的字符数组。

  3. 匿名用户2024-01-23

    1.识字。

    char *a = abcd”;此时"abcd"存放在恒定区域。 指针仅提供对字符串常量的访问,而不能更改它。

    和 char a[20] = abcd“; 此时"abcd"堆叠存放。 可以使用指针来访问和修改数组的内容。

    2. 用法。 在编程过程中,如果只涉及字符串的读取,那么字符数组和字符串常量就可以满足要求,如果有写入(修改)操作,那么只能使用字符数组,而不能使用字符串常量。

    C有两种表示字符串的方式,一种是字符数组,另一种是字符串常量,它存储在内存中的不同位置,这样字符数组就可以读和修改,而字符串常量只能读,不能修改。

    3.访问效率。

    char *a = abcd”;存储在静态存储区域。 堆栈上的数组比指针指向的字符串快,因此速度较慢。

    和 char a[20] = abcd“; 更快地节省堆栈。

  4. 匿名用户2024-01-22

    区别一:定义不同1.字符串指针变量本身是用于存储字符串的第一个地址的变量。 字符串本身存储在从第一个地址开始的连续内存空间中,字符串的末尾为“0”。

    2.字符数组由几个数组元素组成,可用于存储整个字符串。

    区别2:指向字符串的指针方法不同1、char *ps=”c language”;可以写成 char *ps; ps=”c language”;

    2. 数组 char st=不能写成 char st[20];

    st=;您只能逐个为字符数组的每个元素赋值。

  5. 匿名用户2024-01-21

    字符串指针和字符数组之间有很大的区别。

    字符串指针是指向字符串的指针。 它指向字符数组的第一个地址,并且可以通过移动指针来访问字符串中的每个字符。 它是一个动态分配的数组,可以在运行时重新分配内存空间。

    另一方面,字符数组是一个固定大小的数组,在编译时已分配内存空间。 它包含一系列字符,每个字符都可以通过下标访问。

    还有字符串常量,它们是存储在常量区域中的只读字符串。

    字符指针通常更灵活,因为它们可以动态分配内存,并且可以随时重新分配内存大小。 字符数组通常用于确定数组的大小,例如局部变量。

  6. 匿名用户2024-01-20

    数组是一种数据结构,指针是指向变量在内存中的位置的类型,两者没有任何共同之处,这使得很容易给人一种它们直接相关的错觉,因为在 C C++ 语言标准中,当您使用数组名称时,它会转换为指向数组第一个元素地址的指针。 数组中存储的数据在内存中是连续的,因此以下是**

    char str=

    char* p1=str, *p2=&(str[0]);

    使用 str[n] 获取数组的 n+1st 数据的值可以看作是这样做的:首先将 str 转换为第一个元素的地址,即得到点'h',然后说指针向后偏移了 n 个单位才能被指向'h'计算最后 n 个字符。 下面的 p1 和 p2 指针指向的对象也是 str 中的第一个元素(其中 p1=str,str 被转换为指向第一个元素的指针,所以 p1 也指向第一个元素),所以使用它的效果等同于 str,其中方括号,这个运算符,实际上等价于指针偏移量,然后取消引用, 例如:

    p[n] 其实等价于 *(p+n),可以看作是后一句语句的句法糖,但也应该清楚,p1 和 p2 本质上是指针,指针也是一个变量,它指向内存中的某个位置,这个位置是否有有效数据,是否能安全访问甚至存在都不考虑, 而str是一个数组,但是当使用关键词str的时候,会默认转换成指向第一个地址的指针,创建的数组会被分配到空格,所以这个空间必须安全访问(有一些特殊情况默认不会转换),方括号运算符是指针的运算符, 也就是说,当用方括号来获取元素的 str 值时,实际上是先获取第一个元素的地址,然后计算目标元素的地址,最后得到对应的 da

  7. 匿名用户2024-01-19

    数组通常是指已分配的内存块,指针指向该内存块。

  8. 匿名用户2024-01-18

    字符指针变量和字符数组的区别:

    简单地说:

    字符串数组是在内存中占据连续单元的字符串数组。 占用的内存是一个字符串。 该方法定义为:

    char a[n];n 是可以初始化的常量表达式。 字符指针是指向字符的指针,占用的内存单元保存引用字符的内存单元。 该方法定义为:

    char *p;

    完整答案:

    1)字符数组由几个元素组成,每个元素放一个字符,存储在字符指针变量中的地址(字符串的第一个字符的地址)从来都不是字符指针变量中的字符串。

    2)分配方法。

    对于字符数组,只能赋值单个元素,不能通过以下方式赋值字符数组:

    char str[14];

    str = "i love you!";

    对于字符指针变量,可以使用以下值:

    char *a;

    a = "i love you!";

    分配给 a 的值是字符串的第一个元素的地址。

    3) 为字符指针分配初始值。

    char *a = "i love you!";

    等同于字符 *a;

    a = "i love you!";

    以及数组的初始化:

    char str[14] = ;

    不等同于。 char str[14];

    str = "i love you!";

    4)如果定义了一个字符数组,则在编译时为其分配一个内存单元,该内存单元具有确定的地址。定义字符指针变量时,会为指针变量分配一个内存单元,您可以在其中放置字符变量的地址。

    char *a, str[10];

    a = str;

    scanf("%s", a);

    即使 a 指向数组的第一个元素,也要有一个确定的值,然后输入一个字符串并将其存储在以该地址开头的多个单元格中。

    5)指针变量的值可以更改,数组名称为常量。

    6) 将指针变量指向格式字符串,该字符串可用于代替 printf 函数的格式字符串。

    char * format;

    fomat = "a = %d, b = %f"

    printf(format, a, b);

    等同于 printf("a = %d, b = %f", a, b);

    因此,只要更改 printf 指向的字符串,就可以更改输入和输出格式,这个 printf 函数称为可变格式输出函数。

    它也可以用字符数组来实现:

    char format;

    format = "a = %d, b = %f"

    如您所见,指向带有指针变量的字符串更简洁。

  9. 匿名用户2024-01-17

    首先,指针和数组是两种不同的类型!

    我们从中知道,我们可以从 C 语言标准文档中学习:

    iso/iec 9899:1999 - programing language ctypes

    这说明了什么是数组类型。

    同样在 20

    阐释了指针类型。

    在了解了这两种类型之后,我们就明白了数组和指针的区别:

    数组是相同类型的对象的集合,指针是对对象的引用。

    它们在使用上表现出某些相似之处,但也有许多不同之处:

    1.数组直接存储对象,指针指向对象。

    2.不能分配数组的名称,指针变量可以。

    3、size,得到数组的长度(字节单位),size的指针,相当于sizeof(void*)。 请注意,指针长度可能因目标平台而异,因此 sizeof(void*) 是最准确的答案)。

    4、(可能是考试内容,为了正确性呵呵)指针是间接访问,数组是直接访问。

    如果您想了解有关 C 的更多信息,请务必查看 C 的 ISO 标准。

相关回答
12个回答2024-02-25

使用字符串就是使用它的第一个地址(有时和长度,实际上,拥有第一个地址就足够了),无论字符串有多长。 最明显的例子是,当一个(常量)字符串作为参数及其第一个地址传递时。 所以你的比较只是地址的比较。

12个回答2024-02-25

给你一个简明的解释会帮助你理解。

#include >>>More

4个回答2024-02-25

您可以尝试输出,scanf 函数是从缓冲区读取的数据,第二个字符串的数据是空格或换行符制表符。 您可以单独读取它们,但在两者之间添加 fflush(stdin); 清除缓冲区。

7个回答2024-02-25

这有点像在字典中排序...... A 前面有一个带有 b 的单词,例如 apple 前面有 basketball = =|| >>>More

11个回答2024-02-25

截断的字符串应用中文和英文判断。