我可以在C中创建一个Char指针数组吗?

我可以在C中创建一个Char指针数组吗?,第1张

概述我是C的新手,而C中的东西与我所学到的任何其他语言不同.在我的家庭作业中,我想创建一个指向一个字符数组的字符数组,而不是制作一个多维的字符数组,我想我将有更多的控制和创建字符数组,并把每个单独的一个到原始字符数组: char keywords[10];keywords[0] = "float"; 上面的例子就是澄清一个简单的例子.但我的问题是由于我一直在做的研究,我对某事感到困惑.通常这可以在其 我是C的新手,而C中的东西与我所学到的任何其他语言不同.在我的家庭作业中,我想创建一个指向一个字符数组的字符数组,而不是制作一个多维的字符数组,我想我将有更多的控制和创建字符数组,并把每个单独的一个到原始字符数组:
char keywords[10];keywords[0] = "float";

上面的例子就是澄清一个简单的例子.但我的问题是由于我一直在做的研究,我对某事感到困惑.通常这可以在其他语言中工作,但在C中将是:

char *keyword[10];keywords[0] = "float";

但是当我想通过一个函数发送它时,为什么这样做是必要的:

voID function(char **keyword); //function prototype

不会只是传递数组指针就够了吗?

解决方法 看起来你被双星迷惑了
voID function(char ** keyword);

双星只是意味着这个函数希望你将一个指针传递给指向char的指针.此语法不包括任何有关您正在使用数组的事实的信息,或者char实际上是字符串中许多字符的第一个字符.知道这个char **实际指向什么样的数据结构是由程序员决定的.

例如,假设您的数组的开头存储在地址0x1000.函数的关键字参数的值应为0x1000.如果取消引用关键字,则会获取数组中的第一个条目,该字符串是char *,它指向字符串“float”中的第一个字符.如果你取消引用char *,你会得到char“f”.

(设计的)代码将如下所示:

voID function(char **keyword){    char * first_string = *keyword;   // *keyword is equivalent to keyword[0]    char first_char = *first_string;  // *first_string is equivalent to first_string[0]}

上面的例子中有两个指针.通过在取消引用之前向第一个指针添加偏移量,可以访问数组中的不同字符串.通过在取消引用之前向第二个指针添加偏移量,可以访问字符串中的不同字符.

总结

以上是内存溢出为你收集整理的我可以在C中创建一个Char指针数组吗?全部内容,希望文章能够帮你解决我可以在C中创建一个Char指针数组吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1256505.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存