什么app做网站,seo关键词优化公司官网,怎么只做自己的电商网站,企业年金在哪里查询提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 前言整型数组字符数组第一组题第二组题第三组题 总结 前言
在计算之前要了解基本概念#xff1a;
数组名的理解 数组名是数组首元素的地址 有两个例外 1.sizeof(… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 前言整型数组字符数组第一组题第二组题第三组题 总结 前言
在计算之前要了解基本概念
数组名的理解 数组名是数组首元素的地址 有两个例外 1.sizeof(数组名)这里的数组名表示整个数组计算的是整个数组中的大小单位是字节。 2.数组名这里的数组名表示整个数组取出的是整个数组的地址 整型数组
#includestdio.hint main()
{int a[] { 1,2,3,4 };printf(%d\n, sizeof(a));a是数组名数组名单独放在sizeof内部计算的是整个数组的大小4*416size(a)大小是16个字节
printf(%d\n, sizeof(a 0));数组名a是数组首元素地址a0还是数组首元素地址是地址就是4/8个字节
printf(%d\n, sizeof(*a));*aa[0]数组名a是数组首元素地址*a就是首元素求的是大小不是地址整型的大小是4个字节
printf(%d\n, sizeof(a 1));数组名a是数组首元素地址a1是数组第二个元素地址是地址就是4/8个字节
printf(%d\n, sizeof(a[1]));a[1] (a 1)a是数组首元素地址a1是数组第二个元素地址(a1)就是第二个元素就是求大小整型数组大小就是4个字节。
printf(%d\n, sizeof(a));a取出的是整个数组的地址,是地址就是4/8个字节
printf(%d\n, sizeof(*a));sizeof(*a)sizeof(a),这里的a表示整个数组计算的是整个数组中的大小单位是字节。4 * 416
printf(%d\n, sizeof(a 1));a表示整个数组的地址a1表示跳过整个元素依然是地址是地址就是4/8个字节
printf(%d\n, sizeof(a[0]));a[0]是数组首元素地址4/8个字节
printf(%d\n, sizeof(a[0] 1));a[0]是数组首元素地址a[0] 1就是数组第二个元素的地址4/8个字节 return 0;}在x64的环境下就是8个字节在x86环境下就是4个字节 通常使用的是x86环境 字符数组
第一组题
int main()
{char arr[] { a,b,c,d,e,f};printf(%d\n, sizeof(arr));arr单独放在sizeof内部计算的是整个数组的大小char类型的数组单位是一个字节1*66
printf(%d\n, sizeof(arr0));arr表示数组首元素地址arr0依旧是首元素的地址是地址就是4/8个字节
printf(%d\n, sizeof(*arr));arr表示数组首元素地址*arr表示首元素注意计算的不是地址是大小首元素的大小是1个字节
printf(%d\n, sizeof(arr[1]));arr[1]*(arr1),arr[1]表示第二个元素注意计算的不是地址是大小第二个元素得大小是1个字节
printf(%d\n, sizeof(arr));arr是整个数组的地址是地址就是4/8个字节
printf(%d\n, sizeof(arr1));arr是整个数组的地址arr1表示跳过整个数组依旧表示地址是地址就是4/8个字节
printf(%d\n, sizeof(arr[0]1));arr[0]是首元素的地址arr[0]1是第二个元素的地址是地址就是4/8个字节 return 0;
}第二组题 strlen是库函数 作用是求字符串长度统计的是在字符串中\0之前的字符的个数 如果没有\0就会一直往后找
int main()
{char arr[] { a,b,c,d,e,f };printf(%d\n, strlen(arr));因为字符数组arr中没有\0,所以在求字符串长度的时候会一直往后统计字符串长度产生的结果是随机值 printf(“%d\n”, strlen(arr 0)); //arr是首元素地址arr0还是首元素地址 和第一个一样还是随机值
printf(%d\n, strlen(*arr));
//错误代码arr是数组首元素地址*arr是数组首元素就是’a’,a’的ASCII码值是97 strlen函数参数需要传地址那就是将97作为地址传给strlen,strlen就从97这个地址往后统计字符串长度这就非法访问内存了
//错误代码
printf(%d\n, strlen(arr[1]));arr[1]是数组第二个元素‘b’,访问的是’b’的ASCII码值是98所以也是错误代码
printf(%d\n, strlen(arr));arr是数组的地址数组的地址和首元素的地址一样所以传递给strlen函数后依然是从数组的第一个元素向后统计字符串长度随机值
printf(%d\n, strlen(arr 1));arr是首元素地址arr1跳过整个数组从数组最末端向后统计字符串长度结果也是随机值
printf(%d\n, strlen(arr[0] 1));arr[0] 1是第二个元素地址strlen从第二个元素地址向后统计字符串长度结果也是随机值 return 0;
}第三组题
int main()
{char arr[] abcdef;//里面实际放有[a b c d e f \0]printf(%d\n, sizeof(arr));arr单独放在sizeof里面计算的是整个数组的大小单位是字节 char类型的数组单位是一个字节1*77结果是7个字节
printf(%d\n, sizeof(arr0));arr表示首元素地址arr0还是表示首元素地址是地址就是4/8个字节
printf(%d\n, sizeof(*arr));//*arr*(arr0)arr[0]arr表示首元素的地址,*arr表示首元素数组类型是char类型单位是一个字节所以首元素的大小是一个字节
printf(%d\n, sizeof(arr[1]));arrp[1]表示第二个元素大小是一个字节
printf(%d\n, sizeof(arr));arr表示整个数组地址地址是4、8个字节
printf(%d\n, sizeof(arr1));arr表示整个数组地址,arr1表示跳过整个数组依然是地址是地址就是4/8个字节
printf(%d\n, sizeof(arr[0]1));arr[0]表示首元素地址arr[0]1表示第二个元素地址是地址就是4/8个字节 return 0;
}总结
以上就是第一部分的指针和数组笔试题和详细解释。