C语言与指针 | 您所在的位置:网站首页 › 字符指针和字符串指针一样吗为什么 › C语言与指针 |
最近着手做mit6.828的lab,发现对C语言的指针已经忘了一干二净,在此复习一下C语言的指针。 #include #include #include void main() { int a = 10; char buf[10]; char* s = buf; scanf("%s", buf); printf("buf = %s\n", buf); printf("*s = %c\n", *s); printf("s = %s\n", s); printf("buff address = %d\n", buf); printf("decimal s = %d\n", s); printf("hex s = %p\n", s); printf("s + 1 = %s\n", s + 1); }首先定义字符数组buf,他的大小位十个字符长度,该数组的首地址其实也就为buf。 随后定义一个指针s指向字符数组的首地址,即char* s = buf。 随后对字符串进行输入,假设输入abc 文件输出为: buf = abc *s = a s = abc buff address = -10594 decimal s = -10594 hex s = 0x7fffffffd69e s + 1 = bc随后查看调试信息,可以看到%s遇到’\0’时停止输出。s+1可以使得s指针指向数组的第二个元素,所以当输出s+1的%s时,只从第二个元素开始输出了。随后,如果以十进制输出s,可以看到s和buf的首地址是一样的。 |
CopyRight 2018-2019 实验室设备网 版权所有 |