9.一级指针
Posted 微纯册
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9.一级指针相关的知识,希望对你有一定的参考价值。
- 指针的定义与语法
- 指针与数组
- 指针与二维数组
- 指针变量
指针的语法与赋值
指针的语法:数据类型 *指针名
定义:指针内容为数据的内存地址
eg:
void charge(int a, int b) swap(a, b); void ncharge(int *a, int *b) swap(*a, *b); int main() int a = 1, b = 2; charge(a, b); cout << a << " " << b<<endl; ncharge(&a, &b); cout << a << " " << b << endl;
一个指针的指向不确定时
int *n= nullptr; // nullptr为空,即指针为0
指针与数组
整数
int* a; int data[4] = 1,2,3,4 ; a = data; cout << a << endl; cout << a[3] << endl; cout << *a+3 << endl;
字符串
int main() const char* a="hello"; cout << a << endl; cout << *(a+1) << endl;
cout << a[1] << endl;
指针数据在内存中的大小
int main() char* a; int* p; double* da; float* fa; void* va; cout << sizeof(a)<<endl; cout << sizeof(p) << endl; cout << sizeof(da) << endl; cout << sizeof(fa) << endl; cout << sizeof(va) << endl;
指针与二维数组
二维数组指针语法:类型(*变量名)[整形常量]
int main() int(*a)[3]; int data[2][3] = 1,2,3,4,5,6 ; a = data; for (int i = 0; i < 2; i++) for (int j = 0; j < 3; j++) cout << a[i][j]<<" "; cout << endl;
int main() int(*a)[3]; int data[2][3] = 1,2,3; a = data; for (int i = 0; i < 2; i++) for (int j = 0; j < 3; j++) cout << a[i][j]<<" "; cout << endl;
指针变量
语法结果:数据类型 ** 变量名
一级指针与二级指针
文章目录
一级指针改变指针所指向的内容,二级指针改变一级指针的内容(即,改变一级指针变量所存储的地址)
一级指针
地址传参,指针变量接受该地址,指针解引用,代表所指向的内容,*p = ‘b’;可以表示为str=‘b’;
//一级指针改变指针所指向的内容
void GetMemory(char *p)
*p = 'b';//指针解引用,代表所指向的内容.可以表示为str='b';
int main()
char str='a';
char *pb = &str;
GetMemory(&str);
system("pause");
return 0;
二级指针
指针变量也是变量,是变量就有地址,用二级指针存储一级指针的地址,二级指针解引用一次,就代表一级指针。*paa = &b;相当于pa=&b;
//二级指针改变指针,使指针指向其他地址
int main()
int a=10;
int b = 12;
int* pa = &a;
int** paa = &pa;
*paa = &b;//二级指针解引用一次,就代表一级指针。相当于pa=&b;
system("pause");
return 0;
int** paa = &pa;使用二级指针存储一级指针变量的地址。>*paa = &b;//二级指针解引用一次,就代表一级指针。相当于pa=&b;改变了一级指针变量存储的内容。
小结
一级指针改变指针所指向的内容,二级指针改变一级指针存储的内容(即,使一级指针指向其他变量)。在使用指针时,需要明确指针所代表的含义,这样才能更好的预防出错。
以上是关于9.一级指针的主要内容,如果未能解决你的问题,请参考以下文章