* and in C and C++
- 2020-06-03 07:44:42
- OfStack
C + + & And the use of the * 1 is very troubling the difficulty of textbooks blog about these knowledge are divided about its use as a 1, there is no detailed summary, cause I am in this aspect of knowledge structure is chaotic, found 1 in the online English article simply summarizes the two symbols 1 some usage, is a more basic knowledge, I am more concerned about the function pointer, pointer function are not involved, such as the future have time to sort out this part of learning to understand.
C/C + + * and & The use of the
C++ language is a superset of C language. Almost all C programs that can run are C++ programs that can run. Therefore, it is possible to write an C++ program that does not include the C++ feature, although the use of cout and references (see below) would make a better C++ program. C++ and C occasionally differ in their code formats, for example, in C we declare p as a pointer of type int, int *p, whereas in C++ we use int* p (the compiler doesn't care which format you use).
In C/C++, * and & There are many usages, and the exact usage depends on the content of the code.
Use of * in C
(a) Multiplication: x=y*z;
(b) Multiplication assignment: x*=y; Equivalent to x = x * y
(c) Note: /* Here is your note */
(d) declaration of pointer: int *p or int* p; Read: p is a pointer to an integer type.
(e) Composite pointer: int **p; Or int p * *; p is a pointer to a pointer to an integer type. (Same thing, int***p, etc.)
(f) Dereferencing: x=*p assigns the value pointed to by the pointer p to x
& Usage in C
Logic and: if( > 1) & & (b < 0))
(b) bit operation and: x=a & b;
Logic and assignment: x & = y; With x = x & y has the same meaning
(d) Address lookup operator: p= & x; Read: Give the address of x to p (pointer)
C + + & Supplementary usage
One of the variable types in C++ that does not exist refers to a variable (simply a reference), although a similar function can be achieved with Pointers in the C language.
References, Pointers, and addresses are closely related concepts. An address is an address in computer memory, and a pointer is an address variable, so a pointer can "point" to a memory address. Conceptually, a reference variable is essentially another name for a pointer (but cannot be instantiated by the compiler)
It is possible to define a reference within a function like any other variable 1; For example,
void main(void)
{
int i;
int& r = i;
...
}
But this makes no sense, because the use of a reference is the same as the use of a referenced variable.
References are used in function arguments.
void main(void)
{
int i=3;
f(i);
cout << i;
}
void f(int& r)
{
r = 2*r;
}
This program outputs "6" (2*r doubles the variable referenced by r)
In the C language, we can do the same by declaring f() as void f(int *r), where r is a pointer to an integer type, and then calling the argument & i(the address of i) calls the function f(), using a dereference of r within the function f(), but apparently C++ provides a more concise way to pass a value to a function by reference and return a value from a function.