tfsf.net
当前位置:首页>>关于C语言 main() {char a[]={"ABCDE"}; char *p=a; *(...的资料>>

C语言 main() {char a[]={"ABCDE"}; char *p=a; *(...

void main(){ char a[]={"ABCDE"}; char *p=a; *(p+2)+=2; printf("%s",p+1);}以上代码的运行结果是:BEDE主要考查的知识点是C语言中的指针和字符数组的关系.

char a[] = "abc"; 中a是数组名,编译时为其分配4个char单元,前3个单元用“abc"中的字符对应初始化,最后一个存放'\0';char *p = "cdef";在编译时先生成"cdef"字符串常量,存放在常量区,并将首地址(c的地址)赋给char *型指针变量p.从以上可见,a是数组,所以其中的元素abc都可变,可以重写;而p指向的是常量,不可更改.

char a[]="ABCDE"; char *p=UNLL; for(p=a;p

一样的、一个是在定义中赋值、一个是先定义在赋值.

char *a是定义一个char型指针变量a,后面紧接着char *p=a,是定义一个char型指针变量p,并且p和a指向同一个位置.指针里好像有一个说法是什么:定义、关联、引用,三者有顺序

char *a = (char *)_a; // 表示将变量_a进行强制类型转换为char *类型 比如:char _a; char *a = (char *)_a; // 就是将char类型的变量_a转换为char *类型,并赋值给*a

char *a[]是错误的,只能定义char *a[任意整数]; 或者char *a[4或者其他整数或者不填]=“abc”;或者char *a[3或者其他整数或者不填]={'a','b','c'};或者char *a[2或者其他整数或者不填]={"abc","cde"};或者char k,j,l,*a[3]={&k,&j,&l}; char (*)a[]

q=(long *)p; q 是 long int 指针, p 是 char 指针.这个转换 是 q 也指向 p 的首地址.不同的是, q 指针 指数加 1,指向的地点 加4 bytes而 p 指针 指数加 1,指向的地点 只加1 bytes因为,sizeof(char) 等于 1,sizeof(long) 等于4.q++; // 指向的地点 加了 4 bytes,也就是 越过了 abcdr=(char *)q; // 把现在q 指向的地点 给 char r 指针,作为 r 指针的首地址.printf("%s",r); // 按字符形式 打出: efgh

语句printf("%s",*p);会出错,因为%s表示输出字符串,而*p则是指向的字符串的第一个字符,请改成printf("%c",*p);则输出a,改成printf("%d",*p);则输出97,原因分析:char *p="abcde",则字符指针p指向字符串,p的值就是字符串首字符的地址,*p就是第一个字符.

b,d char *p=(char *)(&a+1); 把a当成一个数据结构4个字节,所以p是在'd'后面的一个字节位置

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.tfsf.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com