gpt4 book ai didi

c - 从 C 中不兼容的指针类型错误获取赋值

转载 作者:行者123 更新时间:2023-11-30 16:26:28 26 4
gpt4 key购买 nike

我必须编写一个代码来声明和初始化三个变量:double、int 和 string(5 位,包括空字符),然后使用 printf 和 sizeof 打印大小地址和值

#include <stdio.h>
#include <stdlib.h>

int main() {

int number = 5, *pI;
pI = &number; // Assigning Integer variable to integer pointer
double number2 = 10.5, *pD;
pD = &number2; // Assigning Double variable to Double pointer
char arry[] = "dogs", *pc;
pc = &arry; // Assigning Char Array variable to Char Array Pointer

// Size, Address and Value stored in each Integer Variable, Double Variable and Character Variable
printf("Integer Size is = %d , Address is = 0x%p and Value is = %d: \n",
sizeof(number), &number, number);
fflush(stdout);
printf("Double Size is = %d, Address is = 0x%p and Value is = %lf: \n",
sizeof(number2), &number2, number2);
fflush(stdout);
printf(
"Character Array Size is = %d, Address is = 0x%p and Value is = %s: \n",
sizeof(arry), &arry, arry);
fflush(stdout);

// Pointers Size, Address and Value stored in each Integer Pointer, Double Pointer and Charecter pointer
printf(
"Pointer Integer Size is = %d , Address is = 0x%p and Value is = %d: \n",
sizeof(pI), &pI, *pI);
fflush(stdout);
printf(
"Pointer Double Size is = %d, Address is = 0x%p and Value is = %lf: \n",
sizeof(pD), &pD, *pD);
fflush(stdout);
printf(
"Pointer Character Array Size is = %d, Address is = 0x%p and Value is = %s: \n",
sizeof(pc), &pc, pc);
fflush(stdout);

return 0;
}

最佳答案

char arry[] = "dogs", *pc;
pc = &arry;

arry 的类型为 char[5],它是 char 的数组,因此 &arry 是指向 char 的指针和数组。由于 pc 的类型为 char *,因此指针不兼容。

pc = arry;

这里 arry 衰减为指向其第一个元素的指针,并且此赋值是有效的。

另一方面,如果您确实想要一个指向 char 数组的指针(如注释中所写),则必须像这样声明它:

char (*pc)[5];

此外,您还应该在 printf 中使用正确的标识符,并将指针强制转换为 void *。对于size_t,您应该使用%zu

关于c - 从 C 中不兼容的指针类型错误获取赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53057201/

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