簡體   English   中英

如何將char'a'設置為char指針數組?

[英]How to set a char 'a' to a char pointer array?

我試圖弄清楚如何使用指針。

我對如何在char * line2 [80]中插入單個char感到困惑

甚至可以在不引用另一個指針的存儲位置的情況下做到這一點?

我的想法是,在* 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字符串的2D數組。 line2[0]是第一個字符串。 同樣,您可以再分配79個字符串。

您必須已經讀過,指針是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輸出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM