| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5117 人关注过本帖
标题:初始化指针数组可以用for循环吗
只看楼主 加入收藏
蹴鞠者
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:134
注 册:2016-9-26
结帖率:75%
收藏
已结贴  问题点数:5 回复次数:9 
初始化指针数组可以用for循环吗
程序代码:
#include<stdio.h>
void main()
{
//    char *a[]={"hjk jk","jij","oiu"};
    char *a[6];
    int i;
    for(i = 0; i<6; i++)
        scanf("%s",a[i]);

    printf("%s,",a);
}


输入字符后   点回车  就会出现一个地址不能被读取这样的错误
2016-11-01 11:45
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
for(i = 0; i<5; i++)
        scanf("%c",&a[i]);
a[i]='\0';

[此贴子已经被作者于2016-11-1 12:10编辑过]

2016-11-01 12:09
bccn250
Rank: 5Rank: 5
等 级:职业侠客
帖 子:154
专家分:379
注 册:2010-5-25
收藏
得分:0 
指针好像是没有空间的,只是地址,好像要用什么函数分配空间什么的,
或者让它指向有空间的对像

都忘光了。
2016-11-01 13:11
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
回复 2楼 linlulu001
错误的回答,没注意到题目是指针数组。
2016-11-01 13:40
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
这就相当于修改类似  char * a="test"   这个是只读区域  不可写

指向字符串的指针数组  需要先开辟空间 然后才可以写数据

DO IT YOURSELF !
2016-11-01 14:28
蹴鞠者
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:134
注 册:2016-9-26
收藏
得分:0 
回复 5楼 wp231957
char *a[6];这个不是开辟空间吗
2016-11-01 15:31
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:1 
回复 6楼 蹴鞠者
这个空间不过是存放字符串首地址的用处

但是实际上每一个字符串所呆着的地方  必要要手工申请  不然没地方呆

DO IT YOURSELF !
2016-11-01 15:44
蹴鞠者
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:134
注 册:2016-9-26
收藏
得分:0 
回复 7楼 wp231957
那要怎么开辟空间,能举个例子吗
2016-11-01 16:33
yanjunfeng10
Rank: 2
等 级:论坛游民
威 望:1
帖 子:15
专家分:44
注 册:2016-10-27
收藏
得分:4 
楼主,在使用指针之前你必须要明白一些指针的基本知识:
include<stdio.h>
 void main()
 {
        char *a[6];   //首先,你这个a是一个指针数组,内部存的是6个指针,也就是6个地址
        int i;

        for(i = 0; i<6; i++)
        {
            a[i]=(char *)malloc(4); //在给指针赋值之前,必须分配地址空间给它使用,我这里是分配了大小为4个字节的地址,你可以根据需要调节
            scanf("%s",a[i]); //再赋值
            printf("%s,",a[i]); //%s输出的字符串,但是你要明白,这里不能写a,因为a是包含6个字符串的数组咯
        }
 }

[此贴子已经被作者于2016-11-1 17:51编辑过]

2016-11-01 17:49
jkyy
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2016-3-15
收藏
得分:0 
学习了
2016-11-01 18:09
快速回复:初始化指针数组可以用for循环吗
数据加载中...
 
   



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

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