将字符串添加到数组 C(指针)

San*_*ius 2 c arrays pointers c-strings string-literals

大家好,下面我有一些代码可以初始化一个有 4 个元素的数组,但有 50 个元素的空间。

现在我希望我可以手动向数组添加一些元素,但它对我不起作用有人可以帮助我吗?就像这里我想将 Sander 添加到第 5 个元素。

#include <stdio.h>

int main()
{
    int i;

char *arr[50] = {"C","C++","Java","VBA"};
char *(*ptr)[50] = &arr;

(*ptr)[5]="Sander";
for(i=0;i<5;i++)
    printf("String %d : %s\n",i+1,(*ptr)[i]);

return 0;
}
Run Code Online (Sandbox Code Playgroud)

多谢

Vla*_*cow 7

看来你的意思是以下

#include <stdio.h>

int main( void )
{
    int i;

    char *arr[50] = {"C","C++","Java","VBA"};
    char **ptr = arr;

    ptr[4] = "Sander";

    for ( i = 0; i < 5; i++ )
        printf("String %d : %s\n", i+1, ptr[i] );

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

或以下

#include <stdio.h>

int main( void )
{
    int i;

    char *arr[50] = {"C","C++","Java","VBA"};
    char * ( *ptr )[50] = &arr;

    ( *ptr )[4] = "Sander";

    for ( i = 0; i < 5; i++ )
        printf("String %d : %s\n", i+1, ( *ptr )[i] );

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,输出都是

String 1 : C
String 2 : C++
String 3 : Java
String 4 : VBA
String 5 : Sander
Run Code Online (Sandbox Code Playgroud)

  • @aerijman 该数组在堆栈中分配,它是指向具有静态存储持续时间的字符串文字的指针数组。未显式初始化的数组元素将隐式设置为 NULL。 (2认同)