当前位置:网站首页>[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

边栏推荐
- "C and pointer" - Chapter 13 advanced pointer int * (* (* (*f) () [6]) ()
- 牛客网 JS 分隔符
- Obtenir et surveiller les journaux du serveur distant
- XML Configuration File
- Kubernetes resource object introduction and common commands (V) - (configmap)
- SimpleITK学习笔记
- Go practice -- use JWT (JSON web token) in golang
- Training method of grasping angle in grasping detection
- Go practice -- closures in golang (anonymous functions, closures)
- Final review Day8
猜你喜欢

小学校园IP网络广播-基于校园局域网的小学IP数字广播系统设计
![[together Shangshui Shuo series] day 7 content +day8](/img/fc/74b12addde3a4d3480e98f8578a969.png)
[together Shangshui Shuo series] day 7 content +day8

Win10 install pytullet and test

About debugging the assignment of pagenum and PageSize of the formal parameter pageweb < T > (i.e. page encapsulation generic) in the controller

"C and pointer" - Chapter 13 function pointer 1: callback function 2 (combined with template to simplify code)

Hotel public broadcasting background music - Design of hotel IP network broadcasting system based on Internet +

Disassembly and installation of Lenovo r7000 graphics card

Principles of BTC cryptography

Export the altaro event log to a text file

Primary school campus IP network broadcasting - Design of primary school IP digital broadcasting system based on campus LAN
随机推荐
Sophomore dilemma (resumption)
kubernetes资源对象介绍及常用命令(五)-(ConfigMap)
Apache+PHP+MySQL环境搭建超详细!!!
Final review (Day6)
Brief introduction of realsense d435i imaging principle
chromedriver对应版本下载
NG Textarea-auto-resize
"C and pointer" - Chapter 13 function of function pointer 1 - callback function 1
2022.DAY592
聊聊如何利用p6spy进行sql监控
獲取並監控遠程服務器日志
College campus IP network broadcasting - manufacturer's design guide for college campus IP broadcasting scheme based on campus LAN
牛客网 JS 分隔符
Calculation method of AUC
ansible防火墙firewalld设置
Altaro virtual machine replication failed: "unsupported file type vmgs"
2022.6.30DAY591
Ensemble, série shuishu] jour 9
Intégration profonde et alignement des séquences de protéines Google
Pytorch through load_ state_ Dict load weight