Chinaunix首页 | 论坛 | 博客
  • 博客访问: 171416
  • 博文数量: 44
  • 博客积分: 2762
  • 博客等级: 少校
  • 技术积分: 520
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-04 19:19
文章分类
文章存档

2011年(28)

2010年(16)

我的朋友

分类: C/C++

2010-10-22 14:05:12

指针与数组可以同样使用:

char *p;
char a[]=”djkasgjkldsagjds”;

1#include<stdio.h>
 2#include<string.h>
 3
 4
 5int main (int argc, char **argv)
 6 {
 7 char *p;
 8 char a[] = "dfajsklgjadklsg";
 9
10 //p = a; //ok;  直接将数组的地址赋给指针变量;

11 //*p = a[5]; //segmentation fault;俗称野指针,指针指向地址的值已经知道,但是指针没有被初始化,也就指针没有指向。

12 //p = &(a[5]); //ok ; point to the 6th element;指针指向数组的第六个元素

13 //p = "dfajsklgjadklsg"[5]; 

// In function 'main':
// warning: assignment makes pointer from integer without a cast
//这个意思是将这串数据的第六个元素值作为p(地址)的值。显然错误。

//变换一下为:x[]="dfajsklgjadklsg";p=x[5];

其中错误提示为:参数没有真确赋值??就是赋值不匹配的意思。=前是指针,=后是字符。

14 //*p = "dfajsklgjadklsg"[5] ;同11行。

15 p= &("dfajsklgjadklsg"[5]); //ok;真确取值

16 printf("%s\n",p);
17
18 }


正确的情况下打印为:

klgjadklsg

从第六个元素开始打印字符。
阅读(2953) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-10-25 16:27:59

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com