gpt4 book ai didi

C 指针和数组

转载 作者:行者123 更新时间:2023-12-04 12:29:55 25 4
gpt4 key购买 nike

我了解到:

char ar[] 

相同
char *ar

这三个表达式:

char ar[][] //1
char *ar[] //2
char **ar //3

对于编译器来说是一样的吗?

这两个表达式:

char ar[]
char ar[][]

会在栈上分配数组,而其他的都会在堆上分配吗?

最佳答案

char ar[]; creates an array of characters when size is specified.

char * ar; creates a character pointer. Might point to even a single or more characters.

char ar[][]; when size is specified, creates a 2 dimensional array.
char *ar[]; creates an array of character pointers
char **ar; a pointer to pointer to character.

静态分配内存时

char a[10]; // this goes on stack

在哪里

char *a = malloc(10); // this goes on heap and needs to be freed by the programmer

可能常见的事情是您使用 char **a 分配了一个数组数组,即 a 的每个元素也是一个字符数组。然后可以使用语法 a[x][y]

访问其中的任何一个元素

另一个区别是 char *a 是一个指针变量,即 a 可以重新分配给另一个地址 而 char a[] 将返回 一个指针常量并且不能重新分配 em>.

关于C 指针和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12672912/

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