如何设置char' a'到一个char指针数组?

时间:2017-04-10 04:19:00

标签: c arrays pointers printf

我试图弄清楚如何使用指针。

我对如何将单个字符串插入char * line2感到困惑[80]

这是否可以在不引用另一个指针的内存位置的情况下执行此操作?

我的思维过程是在* line2 [0] =' a'角色' a'将在数组的索引0处。

这与行[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
}

2 个答案:

答案 0 :(得分:2)

分配时

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字符串的2D数组。 line2[0]是第一个字符串。同样,您可以分配79个字符串。

答案 1 :(得分:1)

你必须已经读过,指针是c中的一个特殊变量,它存储了同一个datatype的另一个变量的地址。

例如: -

char a_character_var = 'M'; 
char * a_character_pointer = &a_character_var; //here `*` signifies `a_character_pointer` is a `pointer` to `char datatype` i.e. it can store an address of a `char`acter variable  

同样在你的例子中

char* line2[80];是一个80 char指针数组

使用

line2[0] = &line[0];

您可以通过编写*line2[0]来获取它,这将产生a作为输出