pointers相关内容

char * 和 char[] 的区别

我已经阅读了很多关于它的主题和问题并阅读了很多答案,但仍然难以理解差异以及何时应该使用什么? 我认为当您需要存储数据并且您不知道它的大小时应该使用 char*,因为它是动态的.另外,我不确定我是否正确,但根据我的理解,如果您声明一个 char* 并为其分配一个像这样的文字:字符 *ch = "嗨";这是一个您无法更改的常量,如果您尝试更改它,您只需将 ch 指向另一个分配的存储新字符串的内存 ..
发布时间:2022-01-12 20:41:08 其他开发

如何检查 char* 变量是否指向空字符串?

如何检查 char* 变量是否指向空字符串? 解决方案 检查第一个字符是否为'\0'.您还应该检查您的指针是否为 NULL. char *c = "";if ((c != NULL) && (c[0] == '\0')) {printf("c 为空\n");} 您可以将这两个检查放在一个函数中,以使其方便且易于重用. 编辑:在 if 语句中可以这样理解,“如果 c 不为零且字符数 ..
发布时间:2022-01-12 20:40:55 其他开发

何时将 malloc 用于 char 指针

我特别关注何时在 char 指针上使用 malloc char *ptr;ptr = "某事";...代码......代码...ptr = "别的东西"; malloc 会为了这样微不足道的事情而存在吗?如果是,为什么?如果没有,那么什么时候需要 char 指针? 解决方案 正如其他人所指出的,您不需要使用 malloc 来做: const char *foo = "bar"; 原 ..
发布时间:2022-01-12 20:40:45 其他开发

返回指向C中结构的指针

这个程序返回一个指向结构的指针. 当我打印内容时,name 没有正确显示,而其他两个变量正在正确打印. 可能是什么问题呢?这是C中的代码 #include结构学生{字符名称[20];整数标记;国际排名;};结构学生 stu;结构学生 *create();无效的主要(){结构学生 *ptr;ptr = 创建();printf("%s\t %d\t %d\t",ptr->nam ..
发布时间:2022-01-12 20:39:58 其他开发

从函数返回 char* 不起作用

Visual Studio c++ 显示第 24 行的“字符串"有一个数组元素,但顶部包含用户输入的所有文本.但是当我发送到 PutString() 时,它就消失了.为什么? #include 无效PutString(常量字符* pChar){for( ; *pChar != 0; pChar++ ){putchar(*pChar);}}字符* GetString(){字符 c ..
发布时间:2022-01-12 20:39:07 C/C++开发

如何在C中将struct转换为char数组

我正在尝试将 struct 转换为 char 数组以通过网络发送.但是,当我这样做时,我会从 char 数组中得到一些奇怪的输出. #include 结构 x{诠释 x;} __attribute__((packed));主函数(){结构 x a;a.x=127;char *b = (char *)&a;诠释我;对于 (i=0; i 这是 a.x 的各种值的输出(在使用 gc ..
发布时间:2022-01-12 20:35:10 其他开发

在c中修改char指针的值会产生段错误

以下代码在我的系统上产生分段错误.我不知道为什么.任何帮助,将不胜感激. #includeint main() {字符 * a = "abc";*a = 'c';printf("%c\n", *a);返回0;} 解决方案 标准在 §J.2 中明确将此列为未定义行为: ——程序试图修改一个字符串文字(6.4.5) 如果要将其复制到本地数组中,请执行以下操作: c ..
发布时间:2022-01-12 20:27:25 其他开发

函数中的 C 和指针 - 更改不保存

我有这个似乎可以工作的简单代码(我用调试器检查过)但是当函数执行结束时,字符串没有保存在原始变量中. void getString(char *iText);主函数(){字符 *inputText=malloc(sizeof(char));获取字符串(输入文本);放(输入文本);免费(输入文本);系统(“暂停");返回0;}无效 getString(char *iText){字符 c;诠释我=0 ..
发布时间:2022-01-12 20:27:01 其他开发

函数中字符指针数组的大小

使用此代码: #include 无效 printSize(char *messages[]) {printf("%d", sizeof(messages)/sizeof(char *));}诠释主要(无效){printf("直接传递给函数时的大小:");printSize((char *[]){"零", "一", "二", "三"});printf("\n");printf(" ..
发布时间:2022-01-12 20:25:13 其他开发

在 C 中初始化一个 char 指针.为什么被认为是危险的?

可能重复: char s有什么区别[] 和 C 中的 char *s? 我初始化了一个 char 指针: char *a="test"; 我在某些地方读到这被认为是只读,而且很危险. 这是否意味着 "test" 没有在堆中分配空间?这是否意味着字符串“test"可以稍后在程序中被覆盖? ---扩展我的问题--- 如果我像上面那样初始化了 a 然后我做了一堆其他的初始化 ..
发布时间:2022-01-12 20:22:18 其他开发

在 C 中传递 char 指针

好的,我正在尝试将 char 指针传递给另一个函数.我可以用一个 char 数组来做到这一点,但不能用一个 char 指针来做到这一点.问题是我不知道它的大小,所以我无法在 main() 函数中声明任何关于大小的内容. #include 无效 ptrch ( 字符 * 点) {点=“asd";}int main() {字符 * 点;ptrch(点);printf("%s\n", ..
发布时间:2022-01-12 20:21:16 其他开发

char *array 和 char 数组[]

如果我写这个 char *array = "关于音乐的一件好事"; 我实际上创建了一个数组?我的意思是这样的吗? char array[] = {"One", "good", "thing", "about", "music"}; 解决方案 声明与初始化 char *array = “关于音乐的一件好事"; 声明一个指针array并使其指向一个31个字符的常量数组. 声明和初 ..
发布时间:2022-01-12 20:20:28 其他开发

UnsafeMutablePointer<Int8>来自 Swift 中的字符串

我正在使用 Accelerate 框架中 LAPACK 实现中的 dgeev 算法来计算矩阵的特征向量和特征值.遗憾的是,Apple 文档中没有描述 LAPACK 功能,仅链接到 http://netlib.org/lapack/faq.html 包括在内. 如果你查一下,你会发现dgeev中的前两个参数是表示是否计算特征向量的字符.在 Swift 中,它要求 UnsafeMutablePo ..
发布时间:2022-01-12 20:15:47 移动开发

将字符串文字分配给 char*

可能重复: 如何摆脱不推荐将字符串常量转换为 'char*' GCC 中的警告? 这个作业: char *pc1 = "测试字符串"; 给我这个警告: 警告:不推荐将字符串常量转换为 'char*' 虽然这个看起来不错: char *pc2 = (char*)("测试字符串"); 这是一种真正更好的方法吗? 注意:由于其他原因,我不能使用 const char*. ..
发布时间:2022-01-12 20:15:28 C/C++开发

内存中的字符串文字在哪里?堆栈/堆?

可能重复: C 字符串文字:它们去哪儿了? 据我所知 一般来说,指针必须是由 malloc() 分配,并将被分配堆,然后由 free() 取消分配; 和 非指针(int,char,float,etc..) 将是自动分配给堆栈,并且未分配,只要函数转到返回 但是,从以下代码: #include 主函数(){字符 *a;a = "特萨哈";返回0;} ..
发布时间:2022-01-12 20:08:43 其他开发

在 C 中,为什么不能将整数值分配给 int*,就像将字符串值分配给 char* 一样?

我一直在浏览该网站,但尚未找到此问题的答案. 用一个例子来解释这个问题是最简单的(至少对我来说). 我不明白为什么这是有效的: #include int main(int argc, char* argv[]){字符 *mystr = "你好";} 但这会产生编译器警告(“初始化使指针从整数而不进行强制转换"): #include int ma ..
发布时间:2022-01-12 20:07:20 其他开发

如何获得char *(char数组)的真实长度和总长度?

对于 char [],我可以通过以下方式轻松获取其长度: char a[] = "aaaaa";int 长度 = sizeof(a)/sizeof(char);//长度=6 但是,我不能这样做来获取 char * 的长度: char *a = new char[10];int 长度 = sizeof(a)/sizeof(char); 因为,我知道,这里的 a 是一个指针,因此这里的 len ..
发布时间:2022-01-12 20:05:35 C/C++开发

为什么将 char 指针流式传输到 cout 不打印地址?

当我用 printf() 打印一个 char 指针时,它会根据 %u 或 %s 使用转换说明符来决定是打印地址还是打印整个字符串. 但是当我想用 cout 做同样的事情时,cout 将如何决定应该在地址和整个字符串之间打印什么?这是一个示例来源: int main(){字符 ch='a';字符 *cptr=&ch;cout 这里,在我的 GNU 编译器中,cout 试图将 ch 输出为字 ..
发布时间:2022-01-12 20:02:30 C/C++开发

使用 C 返回一个数组

我对 C 语言比较陌生,在处理数组的方法方面需要一些帮助.来自 Java 编程,我习惯于说 int [] method() 来返回一个数组.但是,我发现使用 C 语言时,您必须在返回数组时使用指针.作为一个新程序员,我真的完全不明白这一点,即使我浏览过很多论坛. 基本上,我正在尝试用 C 语言编写一个返回 char 数组的方法.我将为该方法(我们称之为 returnArray)提供一个数组. ..
发布时间:2022-01-12 19:57:15 其他开发