| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3276 人关注过本帖
标题:指针数组在定义的时候为什么不能付初值
只看楼主 加入收藏
a451410
Rank: 2
等 级:论坛游民
帖 子:73
专家分:98
注 册:2018-3-4
结帖率:77.27%
收藏
已结贴  问题点数:5 回复次数:23 
指针数组在定义的时候为什么不能付初值
如图,标点符号皆为小写英文下没有标点错误。提示指针那一行非法的初始化。但是我在书中看到都是在定义指针数组时就付了初值。
图片附件: 游客没有浏览图片的权限,请 登录注册
   
搜索更多相关主题的帖子: 指针 数组 定义 初值 一行 
2018-03-31 14:14
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
printf("%s %s %s\n", p[0],p[1],p[2]);
2018-03-31 14:41
a451410
Rank: 2
等 级:论坛游民
帖 子:73
专家分:98
注 册:2018-3-4
收藏
得分:0 
回复 楼主 a451410
不是这个问题,是赋值的问题
2018-03-31 15:09
螃蟹爱吃小鱼
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:51
专家分:145
注 册:2018-3-6
收藏
得分:0 
个人感觉程序没问题,就是getch()头文件没写
2018-03-31 17:20
左左南木
Rank: 2
等 级:论坛游民
帖 子:9
专家分:23
注 册:2016-2-28
收藏
得分:0 
赋值有问题, 你怎么能给指针赋予数值呢? int *p = [&a[0], &a[1], &a[2]];

行百里者半九十,行千里者肯定是行百里中懂得学习的人
2018-03-31 18:41
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:2 
回复 3楼 a451410
主函数前3句好象没问题
用什么编译器?
主函数试改为:
int main(void)
{
    return 0;
}
2018-03-31 20:43
sunus
Rank: 4
等 级:业余侠客
威 望:3
帖 子:47
专家分:234
注 册:2017-10-10
收藏
得分:0 
char **p[3]
少一个*

[此贴子已经被作者于2018-4-1 11:19编辑过]

2018-04-01 11:15
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:3 
引用二维数组需要用到数组指针~

char (*p)[3]=s;

~

[此贴子已经被作者于2018-4-1 12:28编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-04-01 11:42
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
以下是引用sunus在2018-4-1 11:15:52的发言:

char **p[3]
少一个*

这个看上去没有问题解,释一下,char** p[3];这个char* p的数据类型是char* p[],是个指针数组,还是个指针,指针的偏移量为char** 型,也就是4个字节,但神奇的是楼主那个二维数组第一维大小恰巧也是4个单位,所以用*p[0],*p[1],还是可以得出结果的,但会提示数据类型不同,而且如果引用** p[0];就见笑了~
所以正常来说还是用数组指针比较好~

PS:楼主那个程序写char* p[4]={a[0],a[1],a[2],a[3]};这样是没有问题的,它们数组每个元素各自保留了a[0],a[1],a[2],a[3]的地址值,所以个人感觉或者是编译器的问题~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-04-01 12:27
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
数组初始化有个有意思的地方,说个题外话~
程序代码:
#include<stdio.h>

int main( void )
{
    const char s[2][4]={"abcdefg","123"};
    puts(s[0]);
    
    return 0;
}


PS:刚刚发现了编译器会警告数组越界,所以这样会对其进行截断处理,说明数组赋值是从那个"abcdefg"这个常量拷贝过去的~

有兴趣的可以运行看看结果是多少~

[此贴子已经被作者于2018-4-1 13:11编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-04-01 12:35
快速回复:指针数组在定义的时候为什么不能付初值
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019366 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved