首页 > 其他分享 >【C语言】指针经典例题

【C语言】指针经典例题

时间:2024-07-03 23:02:20浏览次数:3  
标签:main return int C语言 include 解答 printf 例题 指针

题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:

#include <stdio.h>
//这里告知结构体的大小是20个字节
struct Test
{
	int Num;
	char* pcName;
	short sDate;
	char cha[2];
	short sBa[4];
}*p;
//假设p 的值为0x100000。 如下表表达式的值分别为多少?
//已知,结构体Test类型的变量大小是20个字节
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[4] = { 1, 2, 3, 4 };
    int* ptr1 = (int*)(&a + 1);
    int* ptr2 = (int*)((int)a + 1);
    printf("%x,%x", ptr1[-1], *ptr2);
    return 0;
}

解答如下: 

 题4:

#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;
}

解答如下: 

 

 题5:

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;
}

解答如下: 

 题6:

 

#include <stdio.h>
int main()
{
    int aa[2][5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int* ptr1 = (int*)(&aa + 1);
    int* ptr2 = (int*)(*(aa + 1));
    printf("%d,%d", *(ptr1 - 1), *(ptr2 - 1));
    return 0;
}

解答如下: 

标签:main,return,int,C语言,include,解答,printf,例题,指针
From: https://blog.csdn.net/weixin_66400112/article/details/140163487

相关文章

  • 【C语言】指针和数组经典练习题(一)
    //一维数组inta[]={1,2,3,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......
  • #C语言基础 笔记三
     指针和数组直接访问:按变量的地址存取变量的值(通过数组名访问)间接访问:通过存放变量的地址的变量去访问元素(通过指针访问)1.指针和一维数组inta[5]={1,2,3,4,5};int*p=a;直接访问:inta[5]={5,4,3,2,1};int*p=a;printf("%p%p%p\n",......
  • C语言两个较大数字相加
    C语言两个较大数字相加思路分析由于C语言中的基本数据类型(如int、long等)有固定的大小,无法直接处理非常大的数字(如数百位的数字)。因此,我们需要采用字符串或数组来表示大数字,并逐位进行加法操作。具体思路如下:输入处理:将两个大数字以字符串的形式输入,并将其反转,以方便从低......
  • C语言笔记(第n版):数据类型与运算
            尽管对于计算机而言无所谓数据类型,因为所有的数据都在计算机中以二进制数进行存储,运输和计算,但是对数据进行人为的划定有益于人们对于数据的操作。        在C语言中对于数据类型的划分(因人而异)大致为:一、基本数据类型 什么是数据类型?   ......
  • C语言命名规范
    C语言命名规范在C语言中,命名规范对于代码的可读性和可维护性至关重要。以下是一些常见的C语言命名规律和建议变量命名变量名应该具有描述性,清晰地表达变量的用途或含义。变量名使用小写字母和下划线(snake_case)的组合,例如intmy_variable;。避免使用单个字符作为变量名,除非......
  • c语言基础3
    [1]运算符1.1逻辑运算符&&逻辑与:全真则真,一假则假||逻辑或:一真则真,全假则假!逻辑非:非真则假,非假则真0为假1为真printf("%d\n",2>3);//0printf("%d\n",22>3);//1printf("%d\n",12>3&&8<6);//0printf("%d\n",12>3||8<......
  • C++ 彻底搞懂指针(3)
    1.数组指针、二维数组指针、字符串指针1.1定义一个数组指针前面说过,指针变量存放的是地址,它可以存放普通变量的地址,可以存放另一个指针变量的地址,当然也可以存放数组、结构体、函数的地址。如果一个指针指向了数组,就称它为数组指针,比如下面的代码就定义了一个指针p指向......
  • 信息安全数学基础的几个C语言代码
    相关书籍:《信息安全数学基础-陈恭亮-清华大学出版社-第2版》(豆瓣)1.埃氏筛/*输入一个正整数,输出小于其的全部素数*/#include<stdio.h>#include<stdbool.h>#defineMAXN100001boolvis[MAXN]={1,1};voidEra(intqwq){for(inti=2;i<=qwq;i++){if(vis[......
  • C语言基础知识 - 第一章初步了解C语言(1)
    第一节C语言概述一.基础概念理解1.由计算机高级语言所编写的程序被称为源代码2.语言的分类:3.C语言属于高级语言,其编写程序扩展名为.c(源文件),经过编译后生成的文件的扩展名为.obj(目标文件),经过链接后生成文件的扩展名为.exe(可执行文件)4.C语言程序的执行过程为编译和链......
  • 力扣每日一题 7/2 数学、数论、数组/双指针
    博客主页:誓则盟约系列专栏:IT竞赛专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞......