Chinaunix
标题:
char s[] 和char *s问题
[打印本页]
作者:
justlooks
时间:
2013-04-03 10:31
标题:
char s[] 和char *s问题
书上说char s[]和char *s是一样的,我试了下在函数定义中可以这样
func(char s[])和func(char *s)是一样的,但是在代码中定义编译的话就有问题
写成
int arr[2] = {1,2};
int s[];
s=arr;
gcc会报错
test_point.c: In function 'main':
test_point.c:14:6: error: array size missing in 'q'
test_point.c:15:3: error: incompatible types when assigning to type 'int[1]' from type 'int *'
这个是为什么?
作者:
lin5161678
时间:
2013-04-03 11:38
需要提供 数组大小的信息
可以是在定义的时候 写在 [] 里面
可以是是在初始化的时候 根据元素个数 确定
可以是提供一个完整定义.....
作者:
wlmouse
时间:
2013-04-03 11:46
建议你看看《征服C指针》这本,我最近在看,挺不错的。应该可以解答你的答案。
作者:
cliffordl
时间:
2013-04-03 12:07
回复
1#
justlooks
虽然是一样,但是还是有区别的,C与指针可以看看
作者:
linux_c_py_php
时间:
2013-04-03 12:43
数组和指针是两个类型.
作者:
wlmouse
时间:
2013-04-03 12:49
回复
5#
linux_c_py_php
问题是有时候是一回事有时候又不是一回事,所以不明白的很容易糊涂。
作者:
caohuoxiasoft
时间:
2013-04-03 14:23
数组初始化的时候要指定大小,因为它是静态开辟空间;数组名是常量,不能将常量赋值给常量。数组跟指针还是有很大区别的。
作者:
pmerofc
时间:
2013-04-03 17:04
提示:
作者被禁止或删除 内容自动屏蔽
作者:
蜗niu漫步
时间:
2013-04-03 17:48
s=arr;
s是常量,不能这样赋值。。。
作者:
wlmouse
时间:
2013-04-03 18:51
回复
9#
蜗niu漫步
s不是常量,而是错误的数组写法。
作者:
蜗niu漫步
时间:
2013-04-04 16:16
回复
10#
wlmouse
数组名是常量啊。。。。
作者:
蜗niu漫步
时间:
2013-04-04 16:23
char s[];
不能这样声明。。。。
但是char s[]="abc";
s就是常量。。。。
作者:
pmerofc
时间:
2013-04-04 18:18
提示:
作者被禁止或删除 内容自动屏蔽
作者:
lion7beckham
时间:
2013-04-04 22:54
1.数组定义时若不指定大小,就必须初始化。
2.数组名代表数组的地址,这个是编译时就分配好的,所以不能再更改。
作者:
蜗niu漫步
时间:
2013-04-05 18:28
pmerofc 发表于 2013-04-04 18:18
这种说法并不准确
在C语言中一共有四种常量
constant:
类似声明char s[]="abc";后,s就无法更改,比如对s重新赋值,s="cde";这个编译也没法过。。我说的是这个意思。。。我说的常量是指s无法更改的意思,不是你说的整形常量,浮点常量。。。。。
作者:
pmerofc
时间:
2013-04-05 22:37
提示:
作者被禁止或删除 内容自动屏蔽
作者:
gtkmm
时间:
2013-04-06 01:45
如果你有gcc, 自己用typeof判断就是了
const char* a = "hello";
if (typeof(a) == typeof("hello"))
{
//...不会走到这里的
}
作者:
zooyo
时间:
2013-04-06 09:00
提示:
作者被禁止或删除 内容自动屏蔽
作者:
pmerofc
时间:
2013-04-06 11:42
提示:
作者被禁止或删除 内容自动屏蔽
作者:
zooyo
时间:
2013-04-06 12:55
提示:
作者被禁止或删除 内容自动屏蔽
作者:
pmerofc
时间:
2013-04-06 13:29
提示:
作者被禁止或删除 内容自动屏蔽
作者:
core1011
时间:
2013-04-07 10:00
=号左边 只能是代表变量的。
作者:
tansijie
时间:
2013-04-07 11:08
int s[] ; 定义了一个数组,转换为指针的形势为 int* const s; 也就是说 s是个常量指针,指针的值可以改变,但是指针本身不能随便指,因此你 s=arr的时候会报错。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2