使用指针数组保存字符串并将字符串打印输出。
代码如下:

#include<stdio.h>

int main(){
    // 定义指针数组
    char *s[4] = {"ABC", "DEF", "GHI", "JKL"};
    int n = 4;
    int i;
    char *aPtr;
    // 方法1:通过数组名输出字符串
    for(i=0;i<n;i++){
        printf("第%d个字符串:%s\n", i+1, s[i]);
    }
    // 方法2:通过指向数组的指针输出字符串
    for(aPtr=s[0],i=0;i<n;aPtr=s[i]){
        printf("第%d个字符串:%s\n", i+1, aPtr);
        i++;
    }
    return 0;
}

可以编译运行,但是显示一个警告:

main.c:5:45: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
     char *s[4] = {"ABC", "DEF", "GHI", "JKL"};

image

分析:
char *s[4] = {"ABC", "DEF", "GHI", "JKL"};
也就是说,字符串常量是不能转化为指针变量的。指针数组中存放的是指针变量,指针变量存放的是右边每一个字符串常量的内存首地址,是指示器。右边则只是字符串常量即字面上”ABC”这些。指针即地址和常量有本质性的区别。编译器虽然可以编译,但是会给出警告,表明这是不符合规定的。所以一般建议当const char *类型处理。

修改:
const char *s[4] = {"ABC", "DEF", "GHI", "JKL"};
const修饰,表明指针s指向的内存区域不能被修改,实际上是不能通过s修改s所指向内存区域的内容。
同理,const char *aPtr;


最终代码:

#include<stdio.h>

int main(){
    // 定义指针数组
    const ==char *s[4] = {"ABC", "DEF", "GHI", "JKL"};
    int n = 4;
    int i;
    const char *aPtr;
    // 方法1:通过数组名输出字符串
    for(i=0;i<n;i++){
        printf("第%d个字符串:%s\n", i+1, s[i]);
    }
    // 方法2:通过指向数组的指针输出字符串
    for(aPtr=s[0],i=0;i<n;aPtr=s[i]){
        printf("第%d个字符串:%s\n", i+1, aPtr);
        i++;
    }
    return 0;
}

运行图示:
image

原文地址:http://www.cnblogs.com/lijiuliang/p/16850677.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性