我试图弄清楚如何使用指针。
我对如何将单个字符插入到 char *line2[80] 感到困惑
这甚至可以在不引用另一个指针的内存位置的情况下做到这一点吗?
我的想法是在 *line2[0] = 'a' 字符 'a' 将位于数组的索引 0 处。
这与 line[0] = 'a' 有何不同
#include <stdio.h>
void returnValue(void);
int main(void){
returnValue();
}
void returnValue(){
char line[80];
line[0] = 'a';
line[1] = '\0';
printf("%s",line);
char* line2[80];
*line2[0] = 'a';
*line2[1] = '\0';
printf("%s",*line2); //program crashes
}
当你分配
char* line2[80];
您正在分配一个包含 80 个字符指针的数组。
当你使用
*line2[0] = 'a';
您正在引用未定义的行为。这是因为您正在分配指针line2[0]
,但指针未初始化并且可能未指向内存中的任何有效位置。
您需要初始化指向内存中某个有效位置的指针才能使其工作。执行此操作的典型方法是使用malloc
line2[0] = malloc(10); // Here 10 is the maximum size of the string you want to store
*line2[0] = 'a';
*(line2[0]+1) = '\0';
printf("%s",*line2);
您在上面的程序中所做的是分配一个 C 字符串的二维数组。line2[0]
是第一个字符串。同样,您可以再分配 79 个字符串。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句