当前位置:网站首页>Make learning pointer easier (3)
Make learning pointer easier (3)
2022-07-06 07:58:00 【Xiao Zhang, China Academy of Aeronautical Sciences】
List of articles
Preface
Pointer interview questions , The understanding of pointer no longer stays at the simple level of knowledge , Instead, you can know how the pointer in the interview question is examined ;

One 、 Pointer and array written test question analysis
1.1 One dimensional array
First, let's talk about the knowledge points : Very important !!!
The meaning of array names :
- sizeof( Array name ), The array name here represents the entire array , It calculates the size of the entire array .
- & Array name , The array name here represents the entire array , It takes out the address of the entire array .
- In addition, all array names represent the address of the first element .
int a[ ] = {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) );
printf( “%d\n”,sizeof(&a) ;
printf( “%d\n”,sizeof(&a+1) );
printf( “%d\n”,sizeof(&a[0]) );
printf( “%d\n”,sizeof(&a[0]+1) );


1.2 A character array
char arr[] = {‘a’,‘b’,‘c’,‘d’,‘e’,‘f’};
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));
printf(“%d\n”, strlen(arr));
printf(“%d\n”, strlen(arr+0));
printf(“%d\n”, strlen(*arr));
printf(“%d\n”, strlen(arr[1]));
printf(“%d\n”, strlen(&arr));
printf(“%d\n”, strlen(&arr+1));
printf(“%d\n”, strlen(&arr[0]+1));





char arr[] = “abcdef”;
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));
printf(“%d\n”, strlen(arr));
printf(“%d\n”, strlen(arr+0));
printf(“%d\n”, strlen(*arr));
printf(“%d\n”, strlen(arr[1]));
printf(“%d\n”, strlen(&arr));
printf(“%d\n”, strlen(&arr+1));
printf(“%d\n”, strlen(&arr[0]+1));




char *p = “abcdef”;
printf(“%d\n”, sizeof§);
printf(“%d\n”, sizeof(p+1));
printf(“%d\n”, sizeof(*p));
printf(“%d\n”, sizeof(p[0]));
printf(“%d\n”, sizeof(&p));
printf(“%d\n”, sizeof(&p+1));
printf(“%d\n”, sizeof(&p[0]+1));
printf(“%d\n”, strlen§);
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));




1.3 Two dimensional array
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(a+1) );
printf( “%d\n”,sizeof(* ( a+1) ) );
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]) );


2. Pointer written test questions
int main()
{
int a[5] = { 1, 2, 3, 4, 5 };
int *ptr = (int *)(&a + 1);
printf( “%d,%d”, *(a + 1), *(ptr - 1));
return 0;
}
// What is the result of the program ?


// Because I haven't learned the structure yet , The size of the structure is 20 Bytes
struct Test
{
int Num;
char *pcName;
short sDate;
char cha[2];
short sBa[4];
}*p;
// hypothesis p The value of is 0x100000. What are the values of the expressions in the following table ?
// It is known that , Structure Test The variable size of type is 20 Bytes
int main()
{
printf(“%p\n”, p + 0x1);
printf(“%p\n”, ( unsigned long )p + 0x1);
printf(“%p\n”, (unsigned int * )p + 0x1);
return 0;
}


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



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


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



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


#include <stdio.h>
int main()
{
char *a[] = {“work”,“at”,“alibaba”};
char**pa = a;
pa++;
printf(“%s\n”, *pa);
return 0;
}


int main()
{
char * c[ ] = {“ENTER”,“NEW”,“POINT”,“FIRST”};
char ** cp[] = {c+3,c+2,c+1,c};
char *** cpp = cp;
printf(“%s\n”, ** ++cpp);
printf(“%s\n”, * --* ++cpp+3);
printf(“%s\n”, * cpp[-2]+3);
printf(“%s\n”, cpp[-1][-1]+1);
return 0;
}



summary
Pointer's blog is over , Please look forward to the next blog !!!
边栏推荐
- Basics of reptile - Scratch reptile
- The Vice Minister of the Ministry of industry and information technology of "APEC industry +" of the national economic and information technology center led a team to Sichuan to investigate the operat
- Wireshark grabs packets to understand its word TCP segment
- 数据治理:微服务架构下的数据治理
- How to prevent Association in cross-border e-commerce multi account operations?
- C # display the list control, select the file to obtain the file path and filter the file extension, and RichTextBox displays the data
- "Designer universe" Guangdong responds to the opinions of the national development and Reform Commission. Primary school students incarnate as small community designers | national economic and Informa
- The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
- C intercept string
- ROS learning (IX): referencing custom message types in header files
猜你喜欢

解决方案:智慧工地智能巡檢方案視頻監控系統

Pre knowledge reserve of TS type gymnastics to become an excellent TS gymnastics master

Linked list interview questions (Graphic explanation)
TS 类型体操 之 extends,Equal,Alike 使用场景和实现对比

【T31ZL智能视频应用处理器资料】

Compliance and efficiency, accelerate the digital transformation of pharmaceutical enterprises, and create a new document resource center for pharmaceutical enterprises

861. Score after flipping the matrix

JMeter performance test steps practical tutorial

octomap averageNodeColor函数说明

ROS learning (IX): referencing custom message types in header files
随机推荐
shu mei pai
C # display the list control, select the file to obtain the file path and filter the file extension, and RichTextBox displays the data
Mex related learning
ROS learning (IX): referencing custom message types in header files
数据治理:元数据管理篇
Luogu p4127 [ahoi2009] similar distribution problem solution
Secure captcha (unsafe verification code) of DVWA range
Asia Pacific Financial Media | designer universe | Guangdong responds to the opinions of the national development and Reform Commission. Primary school students incarnate as small community designers
opencv学习笔记九--背景建模+光流估计
. Net 6 learning notes: what is NET Core
Basics of reptile - Scratch reptile
(lightoj - 1410) consistent verbs (thinking)
洛谷P1836 数页码 题解
Opencv learning notes 8 -- answer sheet recognition
Apache middleware vulnerability recurrence
A Closer Look at How Fine-tuning Changes BERT
P3047 [USACO12FEB]Nearby Cows G(树形dp)
"Designer universe" Guangdong responds to the opinions of the national development and Reform Commission. Primary school students incarnate as small community designers | national economic and Informa
Luogu p1836 number page solution
JMeter performance test steps practical tutorial