pointers相关内容
我已经阅读了很多关于它的主题和问题并阅读了很多答案,但仍然难以理解差异以及何时应该使用什么? 我认为当您需要存储数据并且您不知道它的大小时应该使用 char*,因为它是动态的.另外,我不确定我是否正确,但根据我的理解,如果您声明一个 char* 并为其分配一个像这样的文字:字符 *ch = "嗨";这是一个您无法更改的常量,如果您尝试更改它,您只需将 ch 指向另一个分配的存储新字符串的内存
..
如何检查 char* 变量是否指向空字符串? 解决方案 检查第一个字符是否为'\0'.您还应该检查您的指针是否为 NULL. char *c = "";if ((c != NULL) && (c[0] == '\0')) {printf("c 为空\n");} 您可以将这两个检查放在一个函数中,以使其方便且易于重用. 编辑:在 if 语句中可以这样理解,“如果 c 不为零且字符数
..
我特别关注何时在 char 指针上使用 malloc char *ptr;ptr = "某事";...代码......代码...ptr = "别的东西"; malloc 会为了这样微不足道的事情而存在吗?如果是,为什么?如果没有,那么什么时候需要 char 指针? 解决方案 正如其他人所指出的,您不需要使用 malloc 来做: const char *foo = "bar"; 原
..
这个程序返回一个指向结构的指针. 当我打印内容时,name 没有正确显示,而其他两个变量正在正确打印. 可能是什么问题呢?这是C中的代码 #include结构学生{字符名称[20];整数标记;国际排名;};结构学生 stu;结构学生 *create();无效的主要(){结构学生 *ptr;ptr = 创建();printf("%s\t %d\t %d\t",ptr->nam
..
Visual Studio c++ 显示第 24 行的“字符串"有一个数组元素,但顶部包含用户输入的所有文本.但是当我发送到 PutString() 时,它就消失了.为什么? #include 无效PutString(常量字符* pChar){for( ; *pChar != 0; pChar++ ){putchar(*pChar);}}字符* GetString(){字符 c
..
我正在尝试将 struct 转换为 char 数组以通过网络发送.但是,当我这样做时,我会从 char 数组中得到一些奇怪的输出. #include 结构 x{诠释 x;} __attribute__((packed));主函数(){结构 x a;a.x=127;char *b = (char *)&a;诠释我;对于 (i=0; i 这是 a.x 的各种值的输出(在使用 gc
..
以下代码在我的系统上产生分段错误.我不知道为什么.任何帮助,将不胜感激. #includeint main() {字符 * a = "abc";*a = 'c';printf("%c\n", *a);返回0;} 解决方案 标准在 §J.2 中明确将此列为未定义行为: ——程序试图修改一个字符串文字(6.4.5) 如果要将其复制到本地数组中,请执行以下操作: c
..
我有这个似乎可以工作的简单代码(我用调试器检查过)但是当函数执行结束时,字符串没有保存在原始变量中. void getString(char *iText);主函数(){字符 *inputText=malloc(sizeof(char));获取字符串(输入文本);放(输入文本);免费(输入文本);系统(“暂停");返回0;}无效 getString(char *iText){字符 c;诠释我=0
..
使用此代码: #include 无效 printSize(char *messages[]) {printf("%d", sizeof(messages)/sizeof(char *));}诠释主要(无效){printf("直接传递给函数时的大小:");printSize((char *[]){"零", "一", "二", "三"});printf("\n");printf("
..
可能重复: char s有什么区别[] 和 C 中的 char *s? 我初始化了一个 char 指针: char *a="test"; 我在某些地方读到这被认为是只读,而且很危险. 这是否意味着 "test" 没有在堆中分配空间?这是否意味着字符串“test"可以稍后在程序中被覆盖? ---扩展我的问题--- 如果我像上面那样初始化了 a 然后我做了一堆其他的初始化
..
好的,我正在尝试将 char 指针传递给另一个函数.我可以用一个 char 数组来做到这一点,但不能用一个 char 指针来做到这一点.问题是我不知道它的大小,所以我无法在 main() 函数中声明任何关于大小的内容. #include 无效 ptrch ( 字符 * 点) {点=“asd";}int main() {字符 * 点;ptrch(点);printf("%s\n",
..
如果我写这个 char *array = "关于音乐的一件好事"; 我实际上创建了一个数组?我的意思是这样的吗? char array[] = {"One", "good", "thing", "about", "music"}; 解决方案 声明与初始化 char *array = “关于音乐的一件好事"; 声明一个指针array并使其指向一个31个字符的常量数组. 声明和初
..
我正在使用 Accelerate 框架中 LAPACK 实现中的 dgeev 算法来计算矩阵的特征向量和特征值.遗憾的是,Apple 文档中没有描述 LAPACK 功能,仅链接到 http://netlib.org/lapack/faq.html 包括在内. 如果你查一下,你会发现dgeev中的前两个参数是表示是否计算特征向量的字符.在 Swift 中,它要求 UnsafeMutablePo
..
可能重复: 如何摆脱不推荐将字符串常量转换为 'char*' GCC 中的警告? 这个作业: char *pc1 = "测试字符串"; 给我这个警告: 警告:不推荐将字符串常量转换为 'char*' 虽然这个看起来不错: char *pc2 = (char*)("测试字符串"); 这是一种真正更好的方法吗? 注意:由于其他原因,我不能使用 const char*.
..
可能重复: C 字符串文字:它们去哪儿了? 据我所知 一般来说,指针必须是由 malloc() 分配,并将被分配堆,然后由 free() 取消分配; 和 非指针(int,char,float,etc..) 将是自动分配给堆栈,并且未分配,只要函数转到返回 但是,从以下代码: #include 主函数(){字符 *a;a = "特萨哈";返回0;}
..
我一直在浏览该网站,但尚未找到此问题的答案. 用一个例子来解释这个问题是最简单的(至少对我来说). 我不明白为什么这是有效的: #include int main(int argc, char* argv[]){字符 *mystr = "你好";} 但这会产生编译器警告(“初始化使指针从整数而不进行强制转换"): #include int ma
..
对于 char [],我可以通过以下方式轻松获取其长度: char a[] = "aaaaa";int 长度 = sizeof(a)/sizeof(char);//长度=6 但是,我不能这样做来获取 char * 的长度: char *a = new char[10];int 长度 = sizeof(a)/sizeof(char); 因为,我知道,这里的 a 是一个指针,因此这里的 len
..
当我用 printf() 打印一个 char 指针时,它会根据 %u 或 %s 使用转换说明符来决定是打印地址还是打印整个字符串. 但是当我想用 cout 做同样的事情时,cout 将如何决定应该在地址和整个字符串之间打印什么?这是一个示例来源: int main(){字符 ch='a';字符 *cptr=&ch;cout 这里,在我的 GNU 编译器中,cout 试图将 ch 输出为字
..
我对 C 语言比较陌生,在处理数组的方法方面需要一些帮助.来自 Java 编程,我习惯于说 int [] method() 来返回一个数组.但是,我发现使用 C 语言时,您必须在返回数组时使用指针.作为一个新程序员,我真的完全不明白这一点,即使我浏览过很多论坛. 基本上,我正在尝试用 C 语言编写一个返回 char 数组的方法.我将为该方法(我们称之为 returnArray)提供一个数组.
..
我定义了这个结构: 结构 s_molecule{std::string res_name;std::vector;我的粒子;std::vector我的债券;std::vector;我的角度;std::vector我的二面体;s_molecule&运算符=(const s_molecule &to_assign){res_name = to_assign.r
..