当前位置:网站首页 > 技术博客 > 正文

指针网络科技有限公司



/*按照偏移值访问函数形参内容实验*/ //二级指针 void Pros(char* a,int b,int e,char et) { char p=&a; //a==*p printf("%p %p %p %p %p ",&a,p,a,*p,&b); printf("%s ",*p); p++; printf("%d ",*p); p++; printf("%d ",*p); p++; printf("%c ",*p); return; } //一级指针访问 void Test(char* a,int b) { char *p=(char*)&a; //a!=*p; //printf("%p %p %p %p ",&a,p,a,*p); //printf("%p ",&b); //得出结果一级指针自加+1 二级指针自按照元素内容大小自加 //printf("%d %p ",*(++p),p); //printf("%d %p ",*(p+8),p+8); //a=a[0]一个printf函数以'0'结束 //此时p=&a把元素首地址给了p或者说a只记录一个元素首地址的地址 //同等汇编语句 a:db 'Hello' b:db '16' //所以 p=&a != p=a ; /* char *a="Hello"; char *b=(char*)&a; printf("%p %p %p %p",&a,b,a,&(a[0])); */ //printf("%c %p %p ",*a,a,&(a[0])); //printf("%c %p %p ",*(a+1),a+1,&(a[1])); printf("%c ",*(*(char)p)); //if p=a; *p=a; p=a; printf("%s",p); return; } int main() { //Pros("Hello",5,66666,'a'); Test("Hello",16); //指针转换问题 /* char *a="Hello";//&a变量里面存储着a所指向的变量地址 //char p=&a; char *b=(char*)&a; char p=&a; printf("%p %p %p %p ",&a,b,a,*b); printf("%p %c ",&(*a),*(&(*(a+1)))); printf("%p %c ",a,*a);//此时a->H,*a=H; printf("%p %c ",(*p),*(*p)); //p=&a,*p=a所指向的第一个元素的地址还需要一解才能访问正确数据 //所以1级指针需要解2次 所以进行强制转换 printf("%c ",*(*(char)b)); //原试解 现在b=&a,*b= &a->a所以如果此时想正确访问H必须在解 */ return 1; }

版权声明


相关文章:

  • 王道计算机组成原理视频2025-10-02 23:29:59
  • linux查看硬盘分区表2025-10-02 23:29:59
  • 备忘录功能介绍2025-10-02 23:29:59
  • c语言ftell函数的用法2025-10-02 23:29:59
  • c语言中memset函数的用法2025-10-02 23:29:59
  • ldap服务端口2025-10-02 23:29:59
  • vue3和vue2有什么区别2025-10-02 23:29:59
  • 面向对象系统分析与设计2025-10-02 23:29:59
  • 光线和三角形求交2025-10-02 23:29:59
  • 双向链表的构造方法2025-10-02 23:29:59