表达式+sizeof(int+*)+和+sizeof(char+*)+结果是否相等?
1个回答
关注
展开全部
对于表达式+sizeof(int+*)+,它计算的是指针类型(int*)加上int类型所占用的内存字节数,即8字节(64位机器上)或4字节(32位机器上),再加上指针类型本身所占用的内存字节数(8字节或4字节),最终得到的结果为12字节或8字节。对于表达式+sizeof(char+*)+,它计算的是指针类型(char*)加上char类型所占用的内存字节数,即1字节,再加上指针类型本身所占用的内存字节数(8字节或4字节),最终得到的结果为9字节或5字节。
咨询记录 · 回答于2023-06-01
表达式+sizeof(int+*)+和+sizeof(char+*)+结果是否相等?
假设有语句:int list[] = { 2, 4, 6, 8, 10 };int *p = list, n1 = *(p++), n2 = *(p+2);则n1的值为:( ),n2的值为:( )。
对于表达式+sizeof(int+*)+,它计算的是指针类型(int*)加上int类型所占用的内存字节数,即8字节(64位机器上)或4字节(32位机器上),再加上指针类型本身所占用的内存字节数(8字节或4字节),最终得到的结果为12字节或8字节。对于表达式+sizeof(char+*)+,它计算的是指针类型(char*)加上char类型所占用的内存字节数,即1字节,再加上指针类型本身所占用的内存字节数(8字节或4字节),最终得到的结果为9字节或5字节。
假设有语句:int list[] = { 2, 4, 6, 8, 10 };int *p = list, n1 = *(p++), n2 = *(p+2);则n1的值为:( ),n2的值为:( )。
n1 的值为 2,n2 的值为 8。
请用不少于30个字简要说明指针的作用。
是C语言内的指针对吧
对
指针是C语言中的重要概念之一,它用于存储内存地址,并提供了一种间接访问内存的方式。通过指针,我们可以操作内存中的数据、动态管理内存、传递函数参数等,使得程序的功能更加灵活和高效。指针也是C语言中难点和重要知识点之一,掌握指针的概念和使用方法,对于理解C语言程序的底层原理和编写高质量的代码都具有重要意义。
编写程序,实现以下功能:首先,提示用户输入10个整数(分10次提示,每次读入一个数值);然后,使用指针,将用户输入的整数,按顺序存放到数组list1中,按逆序存放到数组list2中;最后,使用指针,分2行输出list1和list2的所有元素。
#include #define N 10int main() { int list1[N], list2[N]; // 定义两个数组 int *p1 = list1, *p2 = list2; // 定义两个指针,分别指向两个数组的首元素 // 提示用户输入10个整数 printf("请输入10个整数:\n"); for (int i = 0; i < N; i++) { printf("请输入第%d个整数:", i + 1); scanf("%d", p1++); } // 将用户输入的整数按顺序存放到数组list1中,按逆序存放到数组list2中 p1 = list1 + N - 1; // 将指针p1指向数组list1的最后一个元素 for (int i = 0; i < N; i++) { *p2++ = *p1; // 将p1指向的元素赋值给p2指向的元素 p1--; // 将p1指向前一个元素
// 输出list1和list2的所有元素 printf("\nlist1数组的所有元素:\n"); p1 = list1; // 将指针p1重新指向数组list1的首元素 for (int i = 0; i < N; i++) { printf("%d ", *p1++); } printf("\n\nlist2数组的所有元素:\n"); p2 = list2; // 将指针p2重新指向数组list2的首元素 for (int i = 0; i < N; i++) { printf("%d ", *p2++); } return 0;}