指针与数组可以同样使用:
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 }
|
正确的情况下打印为:
从第六个元素开始打印字符。
阅读(2996) | 评论(1) | 转发(0) |