新泰做网站,做网站的快捷方式代码,谷歌seo优化排名,行业门户网站建设目录#xff1a;
1. sizeof和strlen的对比
2. 数组和指针 笔试题解析
3. 指针运算 笔试题解析
内容多多#xff0c;需耐心看完#xff0c;加油#xff01;#xff01;#xff01; 一.sizeof和strlen的对比
1.1 sizeof
在学习操作符的时候#xff0c;我们学习了 s…目录
1. sizeof和strlen的对比
2. 数组和指针 笔试题解析
3. 指针运算 笔试题解析
内容多多需耐心看完加油 一.sizeof和strlen的对比
1.1 sizeof
在学习操作符的时候我们学习了 sizeof sizeof为单目操作符。
用来计算变量所占内存空间⼤小的单位是字节。如果操作数是类型的话计算的是使用类型创建的变量所占内存空间的大小。 sizeof 只关注占⽤内存空间的大小不在乎内存中存放什么数据。
例如 1.2 strlen
strlen 是C语言 库函数功能是求字符串⻓度。函数原型如下
size_t strlen ( const char * str );统计的是从 strlen 函数的参数 str 中这个地址开始向后 \0 之前字符串中字符的个数。 strlen 函数会⼀直向后找 \0 字符直到找到为⽌所以可能存在越界查找。 1.3 sizeof 和 strlen的对比 二. 数组和指针笔试题解析
2.1 ⼀维数组
自己可以先计算下面10个问题的答案之后会给出解析。
int a[] {1,2,3,4}; //4个元素printf(%zd\n,sizeof(a)); //1
printf(%zd\n,sizeof(a0)); //2
printf(%zd\n,sizeof(*a)); //3
printf(%zd\n,sizeof(a1)); //4
printf(%zd\n,sizeof(a[1])); //5
printf(%zd\n,sizeof(a)); //6
printf(%zd\n,sizeof(*a)); //7
printf(%zd\n,sizeof(a1)); //8
printf(%zd\n,sizeof(a[0])); //9
printf(%zd\n,sizeof(a[0]1)); //10 【之前的文章也讲到关于对数组名的理解
数组名是数组首元素第一个元素的地址
but有两个例外
1. sizeof数组名--数组名表示整个数组计算的是整个数组的大小单位为字节
2. 数组名--数组名表示整个数组取出的是整个数组的地址】
第1--5题x64环境下 第6--10题 2.2 字符数组
代码1主要考查sizeof
char arr[] {a,b,c,d,e,f};//存放6个字符
printf(%d\n, sizeof(arr));
printf(%d\n, sizeof(arr0));
printf(%d\n, sizeof(*arr));
printf(%d\n, sizeof(arr[1]));
printf(%d\n, sizeof(arr));
printf(%d\n, sizeof(arr1));
printf(%d\n, sizeof(arr[0]1));
解析为 代码2主要考查strlen
char arr[] {a,b,c,d,e,f};
printf(%d\n, strlen(arr));
printf(%d\n, strlen(arr0));
printf(%d\n, strlen(*arr));
printf(%d\n, strlen(arr[1]));
printf(%d\n, strlen(arr));
printf(%d\n, strlen(arr1));
printf(%d\n, strlen(arr[0]1));
解析为 代码3主要考查sizeof
char arr[] abcdef;
printf(%d\n, sizeof(arr));
printf(%d\n, sizeof(arr0));
printf(%d\n, sizeof(*arr));
printf(%d\n, sizeof(arr[1]));
printf(%d\n, sizeof(arr));
printf(%d\n, sizeof(arr1));
printf(%d\n, sizeof(arr[0]1));
解析为 代码4主要考查strlen
char arr[] abcdef;
printf(%d\n, strlen(arr));
printf(%d\n, strlen(arr0));
printf(%d\n, strlen(*arr));
printf(%d\n, strlen(arr[1]));
printf(%d\n, strlen(arr));
printf(%d\n, strlen(arr1));
printf(%d\n, strlen(arr[0]1));
解析为 代码5
char *p abcdef;
printf(%d\n, sizeof(p));
printf(%d\n, sizeof(p1));
printf(%d\n, sizeof(*p));
printf(%d\n, sizeof(p[0]));
printf(%d\n, sizeof(p));
printf(%d\n, sizeof(p1));
printf(%d\n, sizeof(p[0]1)); 解析为 代码6
char *p abcdef;
printf(%d\n, strlen(p));
printf(%d\n, strlen(p1));
printf(%d\n, strlen(*p));
printf(%d\n, strlen(p[0]));
printf(%d\n, strlen(p));
printf(%d\n, strlen(p1));
printf(%d\n, strlen(p[0]1));
解析为 2.3 ⼆维数组
int a[3][4] {0};
printf(%d\n,sizeof(a));
printf(%d\n,sizeof(a[0][0]));
printf(%d\n,sizeof(a[0]));
printf(%d\n,sizeof(a[0]1));
printf(%d\n,sizeof(*(a[0]1)));
printf(%d\n,sizeof(a1));
printf(%d\n,sizeof(*(a1)));
printf(%d\n,sizeof(a[0]1));
printf(%d\n,sizeof(*(a[0]1)));
printf(%d\n,sizeof(*a));
printf(%d\n,sizeof(a[3])); 解析为 3. 指针运算笔试题解析 题目1
#include stdio.h
int main()
{int a[5] { 1, 2, 3, 4, 5 };int *ptr (int *)(a 1);printf( %d,%d, *(a 1), *(ptr - 1));return 0;
}程序的结果是什么 题目2
在X8632位环境下 假设结构体的大小是20个字节 程序输出的结果是啥
struct Test
{int Num;char *pcName;short sDate;char cha[2];short sBa[4];
}*p (struct Test*)0x100000;
int main()
{printf(%p\n, p 0x1);printf(%p\n, (unsigned long)p 0x1);printf(%p\n, (unsigned int*)p 0x1);return 0;
}
解析为 题目3
#include stdio.h
int main()
{int a[3][2] { (0, 1), (2, 3), (4, 5) };int *p;p a[0];printf( %d, p[0]);return 0;
} 解析为 题目4
假设环境是x86环境程序输出的结果是啥
#include stdio.h
int main()
{int a[5][5];int(*p)[4];p a;printf( %p,%d\n, p[4][2] - a[4][2], p[4][2] - a[4][2]);return 0;
}解析为 完