由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 数组问题
相关主题
怎么得到char *分配空间的大小?free(char *)的问题 (转载)
大家看看这个简单的qsort排序的问题再问一个free()的问题
大家新年好。 请教一个 c interview question看下这个小程序
为什么要这样计算数中元素的个数?char s[]和char *ps的不同
strcat()我也来个。某公司招初级C程序员的面试题。[转载]
数组指针的问题呼叫THRUST等C语言牛牛,菜鸟级C语言指针问题
Array in CC 语言,初学者,简单问题
谁来解释一下这个是compiler问题吗?c的问题
相关话题的讨论汇总
话题: char话题: sizeof话题: 数组话题: hello话题: 函数
进入Programming版参与讨论
1 (共1页)
s*****k
发帖数: 604
1
有两个变量
char a[] = "Hello";
char *b = "Hello";
稍微了解指针和数组差别的人可以都知道这个区别
sizeof(a) = 6;
sizeof(b) = 4;
如果有这样一个函数,
void siz(char a[100])
{
printf("%d\n", sizeof(a));
}
请问调用这个函数为什么输出是 4?
f******y
发帖数: 2971
2
是不是compiler优化的原因?
s*****k
发帖数: 604
3
没加优化参数

【在 f******y 的大作中提到】
: 是不是compiler优化的原因?
d******a
发帖数: 238
4

了解指针和数组差别的人也应该知道第二个原因啊。
当数组作为函数的参数进行传递时,数组就自动退化为同类型的指针啊。

【在 s*****k 的大作中提到】
: 有两个变量
: char a[] = "Hello";
: char *b = "Hello";
: 稍微了解指针和数组差别的人可以都知道这个区别
: sizeof(a) = 6;
: sizeof(b) = 4;
: 如果有这样一个函数,
: void siz(char a[100])
: {
: printf("%d\n", sizeof(a));

s*****k
发帖数: 604
5
多谢。我还真不知道。以前用一个基于C的离散事件模拟的语言(先翻译成C再编译),
那里面
数组传递的时候就是拷贝整个数组的, 所以我以为C里面也是这样的。

【在 d******a 的大作中提到】
:
: 了解指针和数组差别的人也应该知道第二个原因啊。
: 当数组作为函数的参数进行传递时,数组就自动退化为同类型的指针啊。

b*******a
发帖数: 68
6
函数参数里的数组如指针等价,即以下相同 (那个100没什么用用,直接忽略,一般别
这么写,没用,因为compiler/runtime不检查,而且confusing):
void foo(char *p)
void foo(char p[])
void foo(char p[100])

【在 s*****k 的大作中提到】
: 有两个变量
: char a[] = "Hello";
: char *b = "Hello";
: 稍微了解指针和数组差别的人可以都知道这个区别
: sizeof(a) = 6;
: sizeof(b) = 4;
: 如果有这样一个函数,
: void siz(char a[100])
: {
: printf("%d\n", sizeof(a));

1 (共1页)
进入Programming版参与讨论
相关主题
c的问题strcat()
其实到今天也没真正搞懂数组参数的传递问题数组指针的问题
difference between: char** p and char*p[] ??Array in C
JHQ的一道指针题。谁来解释一下这个是compiler问题吗?
怎么得到char *分配空间的大小?free(char *)的问题 (转载)
大家看看这个简单的qsort排序的问题再问一个free()的问题
大家新年好。 请教一个 c interview question看下这个小程序
为什么要这样计算数中元素的个数?char s[]和char *ps的不同
相关话题的讨论汇总
话题: char话题: sizeof话题: 数组话题: hello话题: 函数