首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

指针与字符串声明,该怎么处理

2012-05-16 
指针与字符串声明首先说明,下面的代码是错误的,我不是要求改代码。。我是想知道初始化指针的作用;C/C++ code

指针与字符串声明
首先说明,下面的代码是错误的,我不是要求改代码。。我是想知道初始化指针的作用;

C/C++ code
#include<stdio.h>int main(void){    char *m3="hello,address translation!";        //这个* m3是什么意思?有什么用?是不是等于m3[50]?    char m4="hi,address translation!";    char *my[]={"give me some cake.","here you are!"};//*my[]和my1[][]有什么区别?    char my1[][]={"good morning!","good night!"};     //有没有char * my1[][]这样的初始化?    int i;    puts(m3);    puts(m4);    for(i=0;i<strlen(my);i++)           //strlen里面加my是地址吧?怎么错误了?        puts(my[i]);    for(i=0;i<strlen(my1);i++)          //一句话,就是想搞懂指针在声明时的作用。。        putsmy1[i]);    return 0;}

只知道"*"是取后面地址m3的值。刚学了指针,但是指针在各方面的用法还不太懂。。

[解决办法]
m3被定义为一个指向常量区中字符串"hello,address translation!",不是数组。

my被定义为一个指针数组,每个元素都是指向常量区字符串的指针。一个指向"give me some cake.",另一个指向"here you are!"。

my1被定义为一个二维数组,但这样的定义语句是不被支持的。就算通过{}列表来初始化,定义二维数组也至少要指定第二维的大小。

如果写 char * my1[][],你的目的应该是定义一个二维指针数组,但错误同上。

strlen要求一个指向字符串的指针,而你提供给它的是指向char指针的数组的指针。
[解决办法]
楼上说的不错。
建议看下我这篇帖子。记录了些初学指针遇到的一些问题。
http://topic.csdn.net/u/20120319/15/0751ad00-bad3-481b-9f3a-fed7409cb9cc.html

热点排行