篇接上文(),今天我们来讲一些有趣的关于指针的问题🚢🚢🚢
首先我们来看个代码:
int main()
{
//一维数组
int a[] = { 1,2,3,4 };//4个元素,每个元素使int类型(4个字节)
printf("%d\n", sizeof(a));
printf("%d\n", sizeof(a + 0));
printf("%d\n", sizeof(*a));
printf("%d\n", sizeof(a + 1));
printf("%d\n", sizeof(a[1]));
printf("%d\n", sizeof(&a));
printf("%d\n", sizeof(*&a));
printf("%d\n", sizeof(&a + 1));
printf("%d\n", sizeof(&a[0]));
printf("%d\n", sizeof(&a[0] + 1));
return 0;
}
我们知道sizeof函数是计算数组的大小的,所以我们这的输出值都是什么呢?🤔🤔🤔
首先我们要明白:
1、
2、
3、
4、
5、
6、
7、
8、
9、
10、
文章来源地址https://www.toymoban.com/news/detail-795532.html
我们可以看到运行结果和我们分析的是一致的,所以对于数组名的引用,还是有很多坑的。
接下来我们换字符串数组以及strlen函数的例子:
#include <string.h>
int main()
{
//字符数组
char arr[] = { 'a','b','c','d','e','f' };
printf("%d\n", strlen(arr));
printf("%d\n", strlen(arr + 0));
//printf("%d\n", strlen(*arr));
printf("%d\n", strlen(&arr));
printf("%d\n", strlen(&arr + 1));
printf("%d\n", strlen(&arr[0] + 1));
printf("%d\n", sizeof(arr));
printf("%d\n", sizeof(arr + 0));
printf("%d\n", sizeof(*arr));
printf("%d\n", sizeof(arr[1]));
printf("%d\n", sizeof(&arr));
printf("%d\n", sizeof(&arr + 1));
printf("%d\n", sizeof(&arr[0] + 1));
return 0;
}
文章来源:https://www.toymoban.com/news/detail-795532.html
先介绍一下strlen函数:
strlen 求字符串长度
统计的是在字符串中\0之前出现的字符的个数
是不是很奇妙,接下来我们再来看最后一个例子:
int main()
{
char* p = "abcdef";
printf("%d\n", strlen(p));
printf("%d\n", strlen(p + 1));
printf("%d\n", strlen(*p));
printf("%d\n", strlen(p[0]));
printf("%d\n", strlen(&p));
printf("%d\n", strlen(&p + 1));
printf("%d\n", strlen(&p[0] + 1));
return 0;
}
这次我们得主角是一个指针P,它所指向的是一个字符串,那么又会发生怎样奇妙的火花呢?
相信大家经过这次的学习一定可以对指针又不一样的理解🎖️🎖️🎖️
到了这里,关于C语言天花板——指针(进阶3)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!