char **表示啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了char **表示啥意思相关的知识,希望对你有一定的参考价值。

char* 是声明一个字符类型的指针。

比如:chat*  y;

就是声明一个指针y,这个指针指向的地址上只能存放字符类型的值。

扩展资料:

在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。

在高级语言中,指针有效地取代了在低级语言,如汇编语言与机器码,直接使用通用暂存器的地方,但它可能只适用于合法地址之中。指针参考了存储器中某个地址,通过被称为反参考指针的动作,可以取出在那个地址中存储的值。

作个比喻,假设将电脑存储器当成一本书,一张内容记录了某个页码加上行号的便利贴,可以被当成是一个指向特定页面的指针;根据便利粘贴面的页码与行号,翻到那个页面,把那个页面的那一行文字读出来,就相当于是对这个指针进行反参考的动作。

参考技术A char **是二级char指针,表示字符串数组(第一级为字符串,第二级为数组),例如:
char **args = "abc", "China", "System";
参考技术B 你好!!!
*p是个指针变量,指向某一类型的数据

**pp是指向指针的是指针;二级指针:
比如:
char a=‘z’ ,*p=&a,**pp=&p;
解释:
指针变量p的值存放的不是z,而是z在内存中的地址,同样指针变量pp存放的是指针p的地址;
要是输出变量z可以用:cout<<a<<*p<<**pp都是输出z本回答被提问者采纳
参考技术C *p是个指针变量,指向某一类型的数据

**pp是指向指针的是指针;二级指针:
比如:
char a=’z ,*p=&a,**pp=&p;
解释:
指针变量p的值存放的不是z,而是z在内存中的地址,同样指针变量pp存放的是指针p的地址;
要是输出变量z可以用:cout<<a<<*p<<**pp都是输出z。
参考技术D 对于char**p,p是一个指针,与**结合表示指针所指向的元素是指针,然后以char结合表示被指的那个指针指向字符类型,

char word[100] 在 C 中是啥意思

【中文标题】char word[100] 在 C 中是啥意思【英文标题】:What does char word[100] mean in Cchar word[100] 在 C 中是什么意思 【发布时间】:2017-10-31 04:26:36 【问题描述】:

char word[100]; 在 C 中是什么意思。我假设这意味着它将字符限制设置为 100。不过我仍然不确定。

【问题讨论】:

没有。仅 99 @YashKaranke 有了这个声明,编译器分配了一个正好 100 个字节的数组,你可以使用word[x] 对它们中的每一个做任何你想做的事情。 我们希望您在此处提出问题之前先进行自己的研究。这个问题的答案可以在每本 C 教科书和大多数 C 入门教程中找到。 @YashKaranke 不包括 100,它的长度是 100,即 0 到 99。 @YashKaranke,尝试重新阅读您刚刚写的内容。如果 100 是数组中的字符数 -- 它是 -- 那么数组中的字符数是 100。字符数决定了哪些索引值是有效的,而不是相反。 【参考方案1】:

此声明将word 创建为char 的100 元素数组:

      +---+
word: |   | word[0]
      +---+
      |   | word[1]
      +---+
      |   | word[2]
      +---+
       ...  
      +---+
      |   | word[99]
      +---+

每个word[i] 存储一个char 值。在 C 中,数组从 0 开始索引,因此对于 N 元素数组,有效索引的范围是 0 到 N-1。您可以在word(元素0 到98)中存储最多 99 个字符的字符串,为字符串终止符留出1 个元素。当然,您也可以存储较短的字符串:

  0   1   2   3   4   5   6   7       99
+---+---+---+---+---+---+---+---+   +---+
|'H'|'e'|'l'|'l'|'o'| 0 | ? | ? |...| ? |
+---+---+---+---+---+---+---+---+   +---+

您还可以将多个字符串存储在一个数组中:

  0   1   2   3   4   5   6   7   8   9   10  11      99
+---+---+---+---+---+---+---+---+---+---+---+---+   +---+
|'H'|'e'|'l'|'l'|'o'| 0 |'W'|'o'|'r'|'l'|'d'| 0 |...| ? | 
+---+---+---+---+---+---+---+---+---+---+---+---+   +---+

或者,您可以存储 100 个的字符组成一个字符串1

C 声明语法有些复杂——对象的类型由声明说明符(类型说明符、类型限定符、对齐说明符等)和声明符。

在声明中

char word[100];

char 是类型说明符,word[100] 是声明符。 word 的“数组”被指定为声明符的一部分——如果我们更改类型说明符:

int word[100];

我们现在有一个包含 100 个元素的数组 int

数组性、指针性和函数性都在声明器中指定:

T a[N]; // a is an N-element array of T
T *p;   // p is a pointer to T
T f();  // f is a function returning T

其中T 代表类型说明符和限定符的某种组合。数组、指针和函数可以组合成任意复杂的类型:

T *a[N];      // a is an N-element array of pointers to T
T (*a)[N];    // a is a pointer to an N-element array of T
T *(*f())[N]; // f is a function returning a pointer to an N-element array of
              // pointers to T

等等。


    要么是因为你没有存储一个 0 值字符,要么是因为你存储了多个不标记任何结束的 0 值字符。

【讨论】:

【参考方案2】:

char word[100] 创建一个chars 数组,类似于int word[100] 创建一个ints 数组。 这个字符数组将允许您存储从索引 0 到 99 的 100 个字符。

【讨论】:

@Michi,消除了措辞的歧义。 @ikegami 同意,但应该更正。哦,我明白了,你自己做的。 SO允许你这样做吗?【参考方案3】:

word[100] 是一个字符串(char 数据类型的数组)。但是C中的字符串有点 不同于普通数组。字符串末尾将有一个空字符 ('\0')。所以word[100] 可以包含来自您输入的 99 个字符,这些字符将从 0 开始索引 - 98 和一个空字符将被放置在索引号 99 中。

【讨论】:

它可以用来存储一个以 NUL 结尾的字符串,但这远非必要。 char 的数组不是字符串 - word 可能包含一个字符串,或者它可能包含多个字符串,或者它可能包含一系列字符值,它们组成一个字符串,等等。 @Manny_Mar,你错了。再次阅读我写的关于索引的内容。 @John Bode 请您阅读这篇文章并发表评论吗? :tutorialspoint.com/cprogramming/c_strings.htm @Najat:措辞有点误导。根据C Language Standard, 7.1.1/1:“string 是由第一个空字符终止并包括第一个空字符的连续字符序列。”所有字符串都存储char的数组中(或wchar_t对于宽字符串),但并非所有char的数组都包含字符串。

以上是关于char **表示啥意思的主要内容,如果未能解决你的问题,请参考以下文章

char 是啥意思?

C语言中a[i]=(char)(97+i)啥意思?

c语言的双冒号是啥意思::

C语言中 main 是啥意思?

JAVA中类型(char、long、int.....一共八个)有符号和无符号是啥意思

java中“?”是啥意思