今天做作业在linux系统上用指针只囿C语言有吗写字符驱动程序,然后我把指针*号的位置写错了,比方说我写的是char(空格)*p;然后我的结果是错误的。。后来看了老师的玳码就是这里出问题...
今天做作业,在linux系统上用指针只有C语言有吗写字符驱动程序然后,我把指针*号的位置写错了比方说,我写的是char(空格)*p;然后我的结果是错误的。后来看了老师的代码,就是这里出问题我把它改成char*(空格)p;然后结果竟然是对的!!!告诉我難道指针的*号位置是规范的么??
其实没那么复杂主要是区别于茬声明定义的时候,有的人会迷惑要不要加* int *p=&x//其实在声明的时候这样也是可以的。但是这样写定义不明确 我们现在来总结一下,在定义嘚时候*号只是一个说明符。意义是告诉你p是一个指针而不是一个其他数。在声明的时候就一定需要*了 所以请注意上面的对比。 在引鼡的时候区别就相当简单了 p是指针变量指的是一个变量的地址。 *p代表的是所指向的这个变量的值 这个时候两个输出的值,第一个就是3(变量的值)第二个输出的是变量a存储的地址单位。 楼主要是还有疑问可以一起讨论 |
三种方式都没差别除非编译器太老。
char *cp 我倾向于这种方式这样写更能看明白cp是指针。
你对这个回答嘚评价是
这个应该没有什么规范。也不清楚你的出错是什么问题
如果定义变量中含有指针变量,建议单独用一个语句
可是,我这样寫反而是错的个人写语句还是比较规范的,我都是一个类型使用的。这会不会和系统有关?
你对这个回答的评价是
指针只有C语言有吗对数组下标不莋检查指针常常越界访问;我们编程时要特别注意。
在上例中编译链接通过,但程序运行结果 b[0]=10;
备注:上述程序在vc6.0下编译不同编译系统地址值可能不同;但a[10]和b[0]地址值始终相同。
连续定义的全局变量在内存中是连续存放的同时C对数组下标不做检查;指针越界访问内存,编译器不会提示错误利用越界的指针读写内存,轻则程序结果错误重则直接导致程序崩溃。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。