char *a
和int *a
两者在存储字符指针的代码块上的区别是什么?
char *c, k = '$';
int *j;
j = &k;
printf("%c\n%p\n%c\n", k, j, *j);
c = &k;
printf("%c\n%p\n%c", k, c, *c);
激活诊断程序,不要忽略它们(-Wall -Wextra -pedantic-errors
)。
编译器应告诉您您正在执行不允许的操作。
参见此处关于coliru的信息:http://coliru.stacked-crooked.com/a/31acb5b670254167
main.cpp:7:7: error: incompatible pointer types assigning to 'int *' from 'char *' [-Werror,-Wincompatible-pointer-types]
j = &k;
^ ~~
在回答您的问题时,achar
是一个比其低的整数类型int
(意味着可能(实际上,实际上可以保证)更小的大小和值范围),因此,指向这两者的指针也属于不同的类型。
UB使用错误类型的指针访问对象(少数例外)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句