gpt4 book ai didi

c - 将指针分配给数组的正确方法

转载 作者:行者123 更新时间:2023-11-30 14:36:55 25 4
gpt4 key购买 nike

以下是将指针分配给字符数组的正确方法吗?

char s[6] = "hello";
printf("%s\n", s);

char *ptrx = &s[0];
printf("The first char is: %c\n", *ptrx);

起初我认为正确的方法是:

char *ptrx = &s;

但这给了我一些编译器错误。为什么第一种方法是正确的,而第二种方法却不正确?

最佳答案

示例:

示例 1:C 程序,用于理解指向整数的指针和指向整数数组的指针之间的区别。

#include<stdio.h> 

int main()
{
// Pointer to an integer
int *p;

// Pointer to an array of 5 integers
int (*ptr)[5];
int arr[5];

// Points to 0th element of the arr.
p = arr;

// Points to the whole array arr.
ptr = &arr;

printf("p = %p, ptr = %p\n", p, ptr);

p++;
ptr++;

printf("p = %p, ptr = %p\n", p, ptr);

return 0;
}

示例 2:C 程序说明数组指针的大小

 #include<stdio.h> 

int main()
{
int arr[] = { 3, 5, 6, 7, 9 };
int *p = arr;
int (*ptr)[5] = &arr;

printf("p = %p, ptr = %p\n", p, ptr);
printf("*p = %d, *ptr = %p\n", *p, *ptr);

printf("sizeof(p) = %zu, sizeof(*p) = %zu\n",
sizeof(p), sizeof(*p));
printf("sizeof(ptr) = %zu, sizeof(*ptr) = %zu\n",
sizeof(ptr), sizeof(*ptr));
return 0;
}

示例 3:使用指针表示法打印 3D 数组元素的 C 程序

#include<stdio.h> 
int main()
{
int arr[2][3][2] = {
{
{5, 10},
{6, 11},
{7, 12},
},
{
{20, 30},
{21, 31},
{22, 32},
}
};
int i, j, k;
for (i = 0; i < 2; i++)
{
for (j = 0; j < 3; j++)
{
for (k = 0; k < 2; k++)
printf("%d\t", *(*(*(arr + i) + j) +k));
printf("\n");
}
}

return 0;
}

希望这可以帮助您理解。

关于c - 将指针分配给数组的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57751205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com