当前位置:网站首页>[advanced pointer (1)] | detailed explanation of character pointer, pointer array, array pointer
[advanced pointer (1)] | detailed explanation of character pointer, pointer array, array pointer
2022-07-03 05:38:00 【Sobtemesa】
All great actions and thoughts , There's a tiny beginning .
hello world.
Catalog
Array parameters 、 Pointer parameter
One dimensional array parameters :
Two dimensional array parameters :
The pointer passes the parameter
First level pointer parameter transfer
The secondary pointer transmits parameters :
Character pointer
Character pointers are pointer variables that point to character data . We know c There are integers in language , floating-point , Character type but no string type , We usually use character arrays to store strings .
in addition ,C The language also supports using a pointer to a string to represent a string .
Be careful , When assigning values like this ,“abcdef” by Constant string ,"abcdef" It stands for Constant , It's not about putting abcdef Put it in the pointer , Is actually the First character a Address assigned to p, So let's verify that
First , Let's start with Double quotes The role of :
1. Applied for space ( In the constant area ), Stored string
2. Add... At the end of the string '/0'
3. return Address
Why can string constants be assigned to character pointer variables ?
Because it defines an ordinary character pointer , There is no defined space to store "abc", So the compiler has to help us find a place to put "abc", obviously , Take this "abc" As a constant and put it in the constant area of the program is the most appropriate choice for the compiler ."abcdef" The value of is not the character itself , It's the return address , If it is an address, you can receive it with a pointer . So you can assign string constants to character pointer variables .
Be careful , When storing strings with character arrays ,"abcdef" Not a constant string , Defining a character array defines the space for storing strings , Character array is to store characters one by one , So the compiler
will char [] = "abcdef" It can be interpreted as char[]={'a',b'','c','d','e','f','\0'};
because “abcdef” Is a constant string , therefore Its value cannot be modified , as follows , Program crash .
We'd better use const Decorate it , The program will not make mistakes
Do an exercise ~
What is the output ?
analysis : Creating arrays requires space , Different arrays need to open up different spaces , therefore arr1 and arr2 The memory space is different , The array name is the first element address , Different space , Address different , therefore arr1 !=arr2; and “abcdef” Is a constant string , Stored in the constant area , Do not modify the , Fixed address , Is the first character a The address of , therefore p1==p2.
Pointer array
The pointer array is Array , Is an array of addresses .
[ ] The priority ratio * high , therefore parr With the first [ ] combination , Represents an array , Array elements are Pointers .
Analogical analysis :
The application of pointer array :
A profound ~
Array pointer
What is an array pointer ? The same thing , First , It's a pointer . It's an array .
The pointer to the array is the array pointer .
Analogical analysis :
int *p=NULL;//p It's a plastic pointer -- Pointer to the shape -- Can store plastic address
char* pc=NULL;//p It's a character pointer -- Pointer to character -- An address where characters can be stored
char (*p)[10];//p It's an array pointer -- Pointer to array -- The address where the array can be stored
Application of array pointer
Here we need to pay attention to ,&arr It takes out the address of the entire array , namely p Pointer is arr The address of , namely p==&arr;&arr And array names arr Meaning is different .*p Dereference operation makes it get this array , namely *p==arr,arr For array name ( First element address )
This is too awkward and troublesome. We don't usually use it like this , Array pointer is efficient only when it is used above two-dimensional array .
Let's take a look
There are two forms of array parameters :
The first one is :
The second kind :
Let's analyze the second form of parameter transmission :
Two dimensional array array array name first element address ; But what is the address of the first element of a two-dimensional array ?
When we say that the array name is the address of the first element , We need to Think of a two-dimensional array as a one-dimensional array , The first line is the first element , The second element in the second line , The first line is another one-dimensional array , The array has five elements , Each element is int, The address of the first element of the array name of a two-dimensional array is the address of the first line , Is the address of a one-dimensional array , So when passing parameters, we can use array pointer to receive .
Let's analyze three prints :
Play a wave of questions ~
The last parsing :
Array parameters 、 Pointer parameter
When writing code, we need to put Array perhaps The pointer Pass to function , How to design the parameters of the function ?
Array parameters :
One dimensional array parameters :
Two dimensional array parameters :
The pointer passes the parameter
First level pointer parameter transfer
reflection :
When the parameter part of a function is a first-order pointer , What parameters can a function accept ?
void test1(int* p) //test1 What parameters can a function accept ?
{}
void test2(char* p) //test1 What parameters can a function accept ?
{}
answer :1. The pointer 2. Variable address
The secondary pointer transmits parameters :
reflection :
When the parameter part of a function is a secondary pointer , What parameters can a function accept ?
1. The address of the first level pointer
2. The secondary pointer
3. Pointer array
边栏推荐
- 求质数的方法
- 期末复习(day3)
- Jetson AgX Orin platform porting ar0233 gw5200 max9295 camera driver
- Pytorch through load_ state_ Dict load weight
- Webrtc native M96 version opening trip -- a reading code download and compilation (Ninja GN depot_tools)
- Apache+PHP+MySQL环境搭建超详细!!!
- Altaro virtual machine replication failed: "unsupported file type vmgs"
- College campus IP network broadcasting - manufacturer's design guide for college campus IP broadcasting scheme based on campus LAN
- 2022.6.30DAY591
- Redis 入門和數據類型講解
猜你喜欢
Differences among bio, NiO and AIO
Common interview questions of microservice
Why is go language particularly popular in China
redis 无法远程连接问题。
Training method of grasping angle in grasping detection
Congratulations to musk and NADELLA on their election as academicians of the American Academy of engineering, and Zhang Hongjiang and Fang daining on their election as foreign academicians
Map的扩容机制
Linux登录MySQL出现ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
mapbox尝鲜值之云图动画
Redis使用Lua脚本简介
随机推荐
配置xml文件的dtd
Learn libcef together -- set cookies for your browser
How to use source insight
Troubleshooting of 32GB Jetson Orin SOM failure to brush
College campus IP network broadcasting - manufacturer's design guide for college campus IP broadcasting scheme based on campus LAN
Altaro VM backup getting started
在PyCharm中配置使用Anaconda环境
32GB Jetson Orin SOM 不能刷机问题排查
2022.DAY592
[set theory] relational closure (relational closure related theorem)
Final review (Day7)
Go practice -- factory mode of design patterns in golang (simple factory, factory method, abstract factory)
Jetson AGX Orin 平台移植ar0233-gw5200-max9295相机驱动
Common interview questions of microservice
谷歌 | 蛋白序列的深度嵌入和比对
Ensemble, série shuishu] jour 9
Transferring images using flask
Redis expiration elimination mechanism
PHP笔记超详细!!!
Capacity expansion mechanism of map