char **表示啥意思
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了char **表示啥意思相关的知识,希望对你有一定的参考价值。
char* 是声明一个字符类型的指针。
比如:chat* y;
就是声明一个指针y,这个指针指向的地址上只能存放字符类型的值。
扩展资料:
在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。
在高级语言中,指针有效地取代了在低级语言,如汇编语言与机器码,直接使用通用暂存器的地方,但它可能只适用于合法地址之中。指针参考了存储器中某个地址,通过被称为反参考指针的动作,可以取出在那个地址中存储的值。
作个比喻,假设将电脑存储器当成一本书,一张内容记录了某个页码加上行号的便利贴,可以被当成是一个指向特定页面的指针;根据便利粘贴面的页码与行号,翻到那个页面,把那个页面的那一行文字读出来,就相当于是对这个指针进行反参考的动作。
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]
创建一个char
s 数组,类似于int word[100]
创建一个int
s 数组。
这个字符数组将允许您存储从索引 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 **表示啥意思的主要内容,如果未能解决你的问题,请参考以下文章