C 编程指针和数组

Ksh*_*ano 0 c arrays string pointers initialization

#include<stdio.h>

int main()
{
  //int *a={5641,5,98};
  char *s="this is a character array";
  printf("%s",s);
}
Run Code Online (Sandbox Code Playgroud)

这种初始化数组的方法适用于字符数组,但对于整数数组失败请告诉我为什么..?

Vla*_*cow 5

对于您的程序中的初学者来说,s它不是一个数组。它是一个指针。

char *s="this is a character array";
Run Code Online (Sandbox Code Playgroud)

因此,指针s"this is a character array"确实具有字符数组类型的字符串文字的第一个字符的地址初始化。

在 C 中,您可以使用复合文字来初始化指向数组第一个元素的指针。

例如

#include <stdio.h>

int main(void) 
{
    enum { N = 5 };
    int *p = ( int[N] ) { 1, 2, 3, 4, 5 };

    for ( size_t i = 0; i < N; i++ ) printf( "%d ", p[i] );
    putchar( '\n' );

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