当前位置:网站首页>[advanced C language] 8 written questions of pointer
[advanced C language] 8 written questions of pointer
2022-07-07 01:25:00 【Muxixi】
I'm Muxi Xi
List of articles
Written test questions of pointer
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 .
Written test question 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;
}
1.&a It takes out the address of the entire array ,&a+1 Is to skip a type of int(*)[5] Array of .
2.a Not alone sizeof Inside , And the array name a There is no address symbol in front , here a Represents the address of the first element .a+1 Skip a type of int The integer of , That is, the address of the second element .
3.ptr-1 Is to skip a type of int The integer of .
4.*(a+1)–>a[1];*(ptr-1)–>ptr[-1].
Question 2 of the written examination
struct Test
{
int Num;
char* pcName;
short sDate;
char cha[2];
short sBa[4];
}*p = (struct Test*)0x100000;
// 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
//86 In the environment
int main()
{
printf("%p\n", p + 0x1);//0x100000+20-->0x100014
//p+1 Indicates skipping a structure , The size of a structure is 20 Bytes
printf("%p\n", (unsigned long)p + 0x1);
//0x100000+1-->0x100001
printf("%p\n", (unsigned int*)p + 0x1);//0x100000+4-->0x100004
p+1 Indicates skipping a type of unsigned int The integer of , Four bytes
return 0;
}
Written test question 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;
}
1.ptr[-1] amount to *(ptr-1)
2.&a It takes out the address of the entire array ,&a+1 Is to skip a type of int(*)[4] Array of .
3.a Not alone sizeof Inside , And the array name a There is no address symbol in front , here a Represents the address of the first element .a Forced type conversion to int,a+1 Add integers , Then forcibly convert it into a pointer , Skipped a byte , One int The type size is 4 Bytes , The data is stored in the small end , Therefore, by pointing 01 The pointer to , Yes 00. and prt2 The access right of is to access 4 Bytes , so ptr2 What I visited was 0x02000000.
Written test question 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;
}
because int a[3][2] = {(0,1),(2,3),(4,5)} It's a comma expression .
Comma expression , Is multiple expressions separated by commas .
Comma expression , From left to right . The result of the entire expression is the result of the last expression .
so int a[3][2] ={1,3,5};
a[0] Is the array name in the first row ,a[0] Represents the address of the first element , namely a[0][0] The address of ,&a[0][0].
Written test question five
#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;
}
1.p[4][2] amount to *(*(p+4)+2).
2. The two hands subtract , The result is the number of elements between two pointers .
3.%p What is printed directly is the complement , Addresses are considered unsigned integers .
Written test question six
#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;
}
1.*(aa+1) amount to aa[1], Represents the array name of the second row .
2.&aa It takes out the address of the entire array ,&aa+1 Is to skip a type of int(*)[2][5] Array of .
3.aa Not alone sizeof Inside , And the array name aa There is no address symbol in front , here aa Represents the array name of the first row ,aa+1 Represents the array name of the second row .
Written test question 7
#include <stdio.h>
int main()
{
char* a[] = {
"work","at","alibaba" };
char** pa = a;
pa++;
printf("%s\n", *pa);
return 0;
}
pa++ Is to skip a type of char* The pointer to .
Written test question 8
#include<stdio.h>
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;
}
1.*cpp[-2] amount to *(*(cpp-2)).
2.cpp[-1][-1] amount to *(*(cpp-1)-1)
printf(“%s\n”, **++cpp); The result is :
printf(“%s\n”, *-- * ++cpp + 3); The result is :
printf(“%s\n”, *cpp[-2] + 3); The result is :
printf(“%s\n”, cpp[-1][-1] + 1); The result is :
At the end
Then the notes of pointer pen test questions are over here , What doubts or feelings are wrong , Leave a comment in the comments section .
But the road ahead , Not to lose time !
边栏推荐
- [Niuke] [noip2015] jumping stone
- NEON优化:性能优化经验总结
- Neon Optimization: performance optimization FAQ QA
- Oracle: Practice of CDB restricting PDB resources
- mysql: error while loading shared libraries: libtinfo. so. 5: cannot open shared object file: No such
- 云呐|工单管理软件,工单管理软件APP
- UI control telerik UI for WinForms new theme - vs2022 heuristic theme
- Sword finger offer II 035 Minimum time difference - quick sort plus data conversion
- What does security capability mean? What are the protection capabilities of different levels of ISO?
- Supersocket 1.6 creates a simple socket server with message length in the header
猜你喜欢
2022 Google CTF SEGFAULT LABYRINTH wp
资产安全问题或制约加密行业发展 风控+合规成为平台破局关键
移植DAC芯片MCP4725驱动到NUC980
Boot - Prometheus push gateway use
【信号与系统】
Yunna | work order management measures, how to carry out work order management
Wood extraction in Halcon
第三方跳转网站 出现 405 Method Not Allowed
Yunna - work order management system and process, work order management specification
UI control telerik UI for WinForms new theme - vs2022 heuristic theme
随机推荐
Asset security issues or constraints on the development of the encryption industry, risk control + compliance has become the key to breaking the platform
云呐|工单管理软件,工单管理软件APP
Transformation transformation operator
Typical problems of subnet division and super network construction
安利一波C2工具
免费白嫖的图床对比
Informatics Orsay Ibn YBT 1172: find the factorial of n within 10000 | 1.6 14: find the factorial of n within 10000
Neon Optimization: About Cross access and reverse cross access
Install Firefox browser on raspberry pie /arm device
UI control telerik UI for WinForms new theme - vs2022 heuristic theme
Docker method to install MySQL
Neon Optimization: an optimization case of log10 function
Yunna | work order management measures, how to carry out work order management
Neon Optimization: an instruction optimization case of matrix transpose
Neon Optimization: performance optimization FAQ QA
今日问题-2022/7/4 lambda体中修改String引用类型变量
Receive user input, height BMI, BMI detection small business entry case
斗地主游戏的案例开发
Force buckle 1037 Effective boomerang
The difference between spin and sleep