当前位置:网站首页>C language enhancement -- pointer
C language enhancement -- pointer
2022-07-05 07:52:00 【Soy sauce;】
1. Memory profile
notes : After all pointer types are defined, the memory space takes up four
** The variable is equivalent to the address name
The address is equivalent to the memory name
The corresponding data is stored in memory
But the pointer variable stores the address , Characters are stored in character variables ,( Use four spaces as one ),,,
Seemingly one effect , Actually, it uses four spaces , The operation is exactly the same as that of one ,,,
Integer variables store integers , However, when storing, the data is rationalized and evenly distributed in memory **
A byte space corresponds to an address
To get the address is to get the corresponding variable
Address distribution in memory
1. Sort
2. Distribution
2. Pointer overview
Some operators about pointers
& Is to get the starting address of the variable , Regardless of data type , Constants also work ( Machine code , Must use & once , I can see it only because I use 16 Binary printing )
* Take out the value in the corresponding address , If variable , Get the value in the width of the corresponding data type , Such as int take 4 individual , If address , Look at type conversion , If not, take one
Array name , Function name , String names all start with addresses !!!
But a single variable is not , The variable represents the value in the address . Other long and ambiguous strings are .
/ First step : All variables are stored in memory , Let's print the storage address of the variable /
/ The second step : All variables can hold certain values , Then assign values and print /
/ The third step : Use the pointer :1) Value 2) Move the pointer /
+1 and ++ The effect is the same
int type +1 Move 4 Bytes
char type +1 Move 1 Bytes
Look at the specific type
The array is also more than the same plus 4, But the extracted value will be garbled
See the figure below for details. :
Code
/* * printf_test.c V1.0 * Copyright (c) 2017 Shenzhen 100ask Technology Co.Ltd.All rights reserved. * http://www.100ask.org * 100ask.taobao.com * * Test platform : ubuntu16.04(64 Bit machine ) * ubuntu9.10 (32 Bit machine ) * compiler : gcc */
#include <stdio.h>
void test0()// Test a single variable
{
char c;
char *pc;
/* First step : All variables are stored in memory , Let's print the storage address of the variable */
printf("&c =%p\n",&c);
printf("&pc =%p\n",&pc);
/* The second step : All variables can hold certain values , Then assign values and print */
c = 'A';
pc = &c;
printf("c =%c\n",c);
printf("pc =%p\n",pc);
/* The third step : Use the pointer :1) Value 2) Move the pointer */
printf("*pc =%c\n",*pc);
printf("//=================\n");
}
void test1()// Test variable storage address
{
int ia;
int *pi;
char *pc;
/* First step : All variables are stored in memory , Let's print the storage address of the variable */
printf("&ia =%p\n",&ia);
printf("&pi =%p\n",&pi);
printf("&pc =%p\n",&pc);
/* The second step : All variables can hold certain values , Then assign values and print */
ia = 0x12345678;
pi = &ia;
pc = (char *)&ia;
printf("ia =0x%x\n",ia);
printf("pi =%p\n",pi);
printf("pc =%p\n",pc);
/* The third step : Use the pointer :1) Value 2) Move the pointer */
printf("*pi =0x%x\n",*pi);
printf("pc =%p\t",pc); printf("*pc =0x%x\n",*pc); pc=pc+1;
printf("pc =%p\t",pc); printf("*pc =0x%x\n",*pc); pc=pc+1;
printf("pc =%p\t",pc); printf("*pc =0x%x\n",*pc); pc=pc+1;
printf("pc =%p\t",pc); printf("*pc =0x%x\n",*pc);
printf("//=================\n");
}
void test2()// Test array
{
char ca[3]={
'A','B','C'};
char *pc;
/* First step : All variables are stored in memory , Let's print the storage address of the variable */
printf("ca =%p\n",ca);
printf("&pc =%p\n",&pc);
/* The second step : All variables can hold certain values , Then assign values and print */
// There is already ca[3]={'A','B','C'};
pc = ca;
printf("pc =%p\n",pc);
/* The third step : Use the pointer :1) Value 2) Move the pointer */
printf("pc =%p\t",pc); printf("*pc =0x%x\n",*pc); pc=pc+1;
printf("pc =%p\t",pc); printf("*pc =0x%x\n",*pc); pc=pc+1;
printf("pc =%p\t",pc); printf("*pc =0x%x\n",*pc);
printf("//=================\n");
}
void test3()// Test array storage address
{
int ia[3]={
0x12345678,0x87654321,0x13572468};
int *pi;
/* First step : All variables are stored in memory , Let's print the storage address of the variable */
printf("ia =%p\n",ia);
printf("&pi =%p\n",&pi);
/* The second step : All variables can hold certain values , Then assign values and print */
// There is already ia[3]={0x12345678,0x87654321,0x13572468};
pi = ia;
printf("pi =%p\n",pi);
/* The third step : Use the pointer :1) Value 2) Move the pointer */
printf("pi =%p\t",pi); printf("*pi =0x%x\n",*pi); pi=pi+1;
printf("pi =%p\t",pi); printf("*pi =0x%x\n",*pi); pi=pi+1;
printf("pi =%p\t",pi); printf("*pi =0x%x\n",*pi);
printf("//=================\n");
}
void test4() Test string
{
char *pc="abc";
/* First step : All variables are stored in memory , Let's print the storage address of the variable */
printf("&pc =%p\n",&pc);
/* The second step : All variables can hold certain values , Then assign values and print */
// There is already pc="abc";
/* The third step : Use the pointer :1) Value 2) Move the pointer */
printf("pc =%p\n", pc);
printf("*pc =%c\n",*pc);
printf("pc str=%s\n", pc);
}
int main(int argc,char **argv)
{
printf("sizeof(char )=%d\n",sizeof(char ));
printf("sizeof(int )=%d\n",sizeof(int ));
printf("sizeof(char *)=%d\n",sizeof(char *));
printf("sizeof(char **)=%d\n",sizeof(char **));
printf("//=================\n");
//test0();
//test1();
//test2();
//test3();
test4();
return 0;
}
String printing
%s Use
边栏推荐
- Detailed explanation of C language pointer
- Numpy——1.數組的創建
- Acwing - the collection of pet elves - (multidimensional 01 Backpack + positive and reverse order + two forms of DP for the answer)
- Mouse click fireworks explosion effect
- Extern keyword function
- Global and Chinese market of rammers 2022-2028: Research Report on technology, participants, trends, market size and share
- Global and Chinese market of core pallets 2022-2028: Research Report on technology, participants, trends, market size and share
- Use stm32cubemx tool to write the demo program of FreeRTOS
- Altium Designer 19.1.18 - 隐藏某一个网络的飞线
- About the problem that MySQL connector net cannot be cleared in MySQL
猜你喜欢
About the problem that MySQL connector net cannot be cleared in MySQL
Cadence simulation encountered "input.scs": can not open input file change path problem
A complete set of indicators for the 10000 class clean room of electronic semiconductors
II Simple NSIS installation package
Scm-05 basis of independent keyboard
Significance and requirements of semiconductor particle control
Opendrive arc drawing script
数字孪生实际应用案例-风机篇
Train your dataset with yolov4
Ten thousand words detailed eight sorting must read (code + dynamic diagram demonstration)
随机推荐
Temperature sensor DS18B20 principle, with STM32 routine code
Global and Chinese markets for flexible endoscopic lithotripsy devices 2022-2028: Research Report on technology, participants, trends, market size and share
Random function usage notes
How to migrate the device data accessed by the RTSP of the easycvr platform to easynvr?
NSIS finds out whether the file exists and sets the installation path
·Practical website·
Let me teach you how to develop a graphic editor
MLPerf Training v2.0 榜单发布,在同等GPU配置下百度飞桨性能世界第一
LED display equipment records of the opening ceremony of the Beijing Winter Olympics
2021-10-28
Ads usage skills
L'étude a révélé que le système de service à la clientèle du commerce électronique transfrontalier a ces cinq fonctions!
How to excavate and research ideas from the paper
Apple terminal skills
Global and Chinese markets of large aperture scintillators 2022-2028: Research Report on technology, participants, trends, market size and share
Count and sort the occurrence times of specific fields through SQL statements
Use of orbbec Astra depth camera of OBI Zhongguang in ROS melody
Application of ultra pure water particle counter in electronic semiconductors
Altium Designer 19.1.18 - 隐藏某一个网络的飞线
Leetcode solution - number of islands