初始化 " 指向整数数组的指针"

int /*a/[5];


我们如何初始化指向一系列的指针 5 上面显示的整数。

是正确的表达式吗? ?


int /*a/[3]={11,2,3,5,6};
已邀请:

江南孤鹜

赞同来自:

假设你有一个数组 int 长度
5

, 例如


int x[5];


然后你可以做到
a = &x



int x[5] = {1};
int /*a/[5] = &x


要访问数组元素:
/*a/[i]

/==
/*/&x//[i]

==
/*&x/[i]

==
x[i]

/ 需要括号,因为操作员的优先级
[]

比......高
*

. /可以执行其中一个常见错误
*a[i]

访问数组的元素/.

了解您要求编译时间错误:


int /*a/[3] = {11, 2, 3, 5, 6};


类型的不正确和不一致,因为
{11,2,3,5,6}

可以是规定的
int a[5];

, 你分配了
int /*a/[3]

.

此外,

您可以做一些测量的东西:


int *why = /int p[2]/ {1,2};


同样,对于二维尝试它 /谢 @

/:


int /*a/[5] = /int p[][5]/{ { 1, 2, 3, 4, 5 } , { 6, 7, 8, 9, 10 } };

快网

赞同来自:

{11,2,3,5,6}

-这是

列表

初始化者,而不是数组,所以您无法指定它。 数组指针应指向具有内存中允许位置的数组。 如果数组是命名变量或只是一件选定的内存,则无关紧要。

所有这些都归结为您需要的数组类型。 有各种方式来宣布阵列 C, 根据目的:


// plain array, fixed size, can be allocated in any scope
int array[5] = {11,2,3,5,6};
int /*a/[5] = &array

// compound literal, fixed size, can be allocated in any scope
int /*b/[5] = &/int[5]/{11,2,3,5,6};

// dynamically allocated array, variable size possible
int /*c/[n] = malloc/ sizeof/int[n]/ /;

// variable-length array, variable size
int n = 5;
int vla[n];
memcpy/ vla, something, sizeof/int[n]/ /; // always initialized in run-time
int /*d/[n] = &vla

知食

赞同来自:

int a1[5] = {1, 2, 3, 4, 5};
int /*a/[5] = &a1

莫问

赞同来自:

int vals[] = {1, 2};
int /*arr/[sizeof/vals//sizeof/vals[0]/] = &vals


然后您可以访问数组的内容,如下所示:


/*arr/[0] = ...

要回复问题请先登录注册