首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指向字符

指向字符
EN

Stack Overflow用户
提问于 2018-04-27 16:18:59
回答 2查看 72关注 0票数 0

我试图让一个指针指向一个字符,然后另一个指针指向第一个指针,这使得它们都存储了相同的值。

代码语言:javascript
复制
char ch = 'A';
char *cPtr1, *cPtr2;
cPtr1 = &ch;
cPtr2 = cPtr1;
printf("cPtr1 Stored:%c  Point:%x   Memory:%x\n", cPtr1, *cPtr1, &cPtr1);
printf("cPtr2 Stored:%c  Point:%x   Memory:%x\n", cPtr2, *cPtr2, &cPtr2);

问题是,每次我运行它,它存储一个不同的字符,总是指向'41‘。我做错什么了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-27 16:25:03

你把传递给printf的内容搞混了。以下是您要寻找的内容:

代码语言:javascript
复制
printf("cPtr1 Stored:'%c'  Point:%p   Memory:%p\n", *cPtr1, (void*)cPtr1, (void*)&cPtr1);
printf("cPtr2 Stored:'%c'  Point:%p   Memory:%p\n", *cPtr2, (void*)cPtr2, (void*)&cPtr2);

演示。

如您所见,cPtr1cPtr2都指向同一个字符。此外,这两个指针是相同的。然而,指针本身在内存中占据单独的位置。

对变动的解释:

  • 您需要取消引用指针*cPtr1以使用%c打印
  • 您需要使用%p打印指针
  • 打印指针时,需要将参数转换为(void*)
票数 1
EN

Stack Overflow用户

发布于 2018-04-27 16:24:56

问题是,在“存储:”之后打印地址:

代码语言:javascript
复制
ch = 'A';
cPtr* = &ch;
printf("%x",cPtr); // Printing the pointer value(the address of the stored char).
printf("%c",*cPtr); // Printing the value which the pointer points to(dereferencing).
printf("%x",&cPtr); // Printing the address of the pointer itself.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50066547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档