gpt4 book ai didi

c - Learning C Pointers - 赋值是打印出三个不同数组的地址和变量大小

转载 作者:太空宇宙 更新时间:2023-11-04 02:47:13 25 4
gpt4 key购买 nike

我编写了以下有效的代码,我可以看到一个指针只占用(我认为)4 个字节的内存;而普通的旧数组占用 20 个字节。但是,我不确定它为什么有效!

当我声明我的字符数组时,我必须使它成为一个指针,否则它不会编译和运行。然后我能够使我的角色成为一个 int 类型的指针;但我不确定为什么会这样。

为什么我可以这样做“int *ptrOfChars = arrayOfChars;”而不是这样做“char *ptrOfChars = arrayOfChars;” ?

这是我的代码:

int main(void)
{
int i;

int arrayOfNums[] = {1,2,3,4,5};
char *arrayOfChars[] = {"hello","how","are","you","doing"};
float arrayOfFloats[] = {1.23,2.34,3.45,4.56,5.67};

int *ptrOfNums = arrayOfNums;
int *ptrOfChars = arrayOfChars;
float *ptrOfFloats = arrayOfFloats;

printf("\n\n");

printf("----- Array of Numbers -----\n");
printf("The size of this array is %d\n\n", sizeof(arrayOfNums));

for (i = 0; i < 5; i++)
{
printf("Value in the array is %d\n", *ptrOfNums);
printf("Address of pointer is %x\n", ptrOfNums++);
}

printf("\n\n");

printf("----- Array of Characters -----\n");
printf("The size of this array is %d\n\n", sizeof(*arrayOfChars));

for (i = 0; i < 5; i++)
{
printf("Value in the array is %s\n", *ptrOfChars);
printf("Address of pointer is %x\n", ptrOfChars++);
}

printf("\n\n");

printf("----- Mardi Gras -----\n");
printf("The size of this array is %d\n\n", sizeof(arrayOfFloats));

for (i = 0; i < 5; i++)
{
printf("Value in the array is %f\n", *ptrOfFloats);
printf("Address of pointer is %x\n", ptrOfFloats++);
}

system("pause");
return 0;
}

感谢您的帮助!!

最佳答案

//This is an array of strings.
char *arrayOfChars[]={"hello","how","are","you","doing"};

//This is an array of characters.
char arrayOfChars[]={'h','e','l','l','o',};

数组 char *arrayOfChars[] 中的每个指针都指向每个单词的第一个字符。
这是从数组中查找单词所需的全部信息。
例如,要获取数组的第一个单词,您需要一个指向字符串“hello”的第一个字符的指针。
然后你会找到下一个字符和下一个等等。
h --> e --> l --> l --> o --> EndOfString.

关于c - Learning C Pointers - 赋值是打印出三个不同数组的地址和变量大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26026592/

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