| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 626 人关注过本帖
标题:关于字符型指针的指针赋值问题
只看楼主 加入收藏
教皇
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2011-10-6
结帖率:95.65%
收藏
已结贴  问题点数:4 回复次数:3 
关于字符型指针的指针赋值问题
将字符串数组名赋给一个指针和用strcpy有什么不同?
见下面红色字体。
#include<iostream.h>
#include<string.h>
void main()
{
 int n,i;
 char **p;
 char str[15];
 cout<<"input the number:"<<endl;
 cin>>n;
 p=new char* [n];
 for(i=0;i<n;i++)
 {
  cout<<"input the line:";
  cin>>str;
  *(p+i)=new char (strlen(str)+1);
  strcpy(*(p+i),str); /为什么这里不能改成 *(p+i)=str;/
  
 }
 for(i=0;i<n;i++)
  cout<<*(p+i)<<endl;
 
搜索更多相关主题的帖子: include 字符串 
2012-04-13 12:59
davidlv419
Rank: 2
等 级:论坛游民
帖 子:24
专家分:69
注 册:2009-4-30
收藏
得分:4 
回复 楼主 教皇
变量str的起始地址是固定的内存地址。

*(p+i) = str;
让*(p+i)总等于str首地址,故*(p+i)的值都是一样的,
等于最后一个字符串首地址。

所以要使用strcpy函数将各字符串首地址赋值给*(p+i)。
2012-04-13 15:22
davidlv419
Rank: 2
等 级:论坛游民
帖 子:24
专家分:69
注 册:2009-4-30
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<string.h>

int main(){
        int n,i;
        char *p[100];
        char str[15];

        printf("Input a number:");
        scanf("%d", &n);

        for(i=0; i<n; i++){
                printf("Input a line:");
                scanf("%s", str);
                *(p+i) = (char*)malloc(strlen(str)+1);
                strcpy(*(p+i), str);
        }

        for(i=0; i<n i++){
                printf("%s\n", *(p+i));
        }
       
        return 0;
}
2012-04-13 15:31
教皇
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2011-10-6
收藏
得分:0 
回复 2楼 davidlv419
明白了!!谢谢
2012-04-13 18:35
快速回复:关于字符型指针的指针赋值问题
数据加载中...
 
   



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

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