【2021-02-06】C++指针基础

 1 #include<iostream>
 2 using namespace std;
 3 int main(){
 4     
 5     //1. 如何定义一个指针
 6     int a = 10;
 7     //指针定义的语法:数据类型 *指针变量名 
 8     int *p;
 9     //让指针记录变量a的地址
10     p = &a; 
11     
12     cout << "a的地址为:" << &a << endl; 
13     cout << "指针p = " << p <<endl; 
14     //2.如何使用指针 
15     //可以通过解引用的方式来找到指针指向的内存
16     //指针前加*代表解引用,找到指针指向内存中的数据 
17     cout << "a = " << a << endl; 
18     cout << "*p = " <<*p << endl; 
19 
20      
21     
22     
23     system("pause");
24     
25     return 0;
26 } 
指针的定义和使用
 1 #include<iostream>
 2 using namespace std;
 3 int main(){
 4     
 5     //指针所占内存空间大小
 6     int a =10;
 7     int *p = &a;
 8     
 9     //在32位操作系统下,指针占4个字节
10     //在64位操作系统下,指针占8个字节 
11     cout << "sizeof int * =" << sizeof(int *) <<endl;
12     cout << "sizeof float * =" << sizeof(float *) <<endl;
13     cout << "sizeof double * =" << sizeof(double *) <<endl;
14     cout << "sizeof char * =" << sizeof(char *) <<endl;    
15     
16     system("pause");
17     
18     return 0;
19 } 
指针所占内存空间
 1 #include<iostream>
 2 using namespace std;
 3 int main(){
 4     
 5     //空指针
 6     //1.用途:初始化指针变量
 7     int *p = NULL; 
 8     
 9     //2。空指针不可以进行访问
10     //0~255之间的内存编号是系统占用的,因此不可以访问 
11     
12     //野指针,指向非法内存空间 
13     //程序中,避免出现野指针 
14     int *a =(int *)0x1100; 
15     
16     system("pause");
17     
18     return 0;
19 } 
空指针与野指针
 1 #include<iostream>
 2 using namespace std;
 3 int main(){
 4     
 5     //1.const修饰指针 常量指针 
 6     int a=10;
 7     int b=10; 
 8     
 9     const int *p = &a;
10     //指针指向的值不可以改,指针的指向可以改
11     //*p=20;
12     p = &b;  
13     
14     //2.const修饰常量 指针常量
15     //指针指向不可以改,指针指向的值可以改 
16     int * const p2 =&a;
17     *p2 = 100;
18     //p2 = &b;
19     
20     //3.const修饰指针和常量 
21     const int * const p3 = &a;
22     //*p3 = 100;
23     //p3 =&b; 
24     
25     system("pause");
26     
27     return 0;
28 } 
const修饰指针
 1 #include<iostream>
 2 using namespace std;
 3 int main(){
 4     
 5     //指针和数组
 6     //利用指针访问数组中的元素
 7     
 8     int arr[10]={1,2,3,4,5,6,7,8,9,10};
 9     
10     cout << "第一个元素为:" << arr[0] << endl;
11     
12     int *p = arr; //arr就是数组的首地址 
13     cout << "利用指针访问第一个元素为:" << *p << endl; 
14     
15     p++;//指针向后偏移4个字节
16     cout << "利用指针访问第二个元素为:" << *p << endl; 
17     
18     cout << "利用指针遍历数组:" << endl;
19     
20     int *p2 =&arr[0];
21     for(int i = 0; i<10;i++){
22         cout << *p2 << endl;
23         p2++;
24     } 
25     
26     system("pause");
27     
28     return 0;
29 } 
指针和数组
 1 #include<iostream>
 2 using namespace std;
 3 //实现两个数字进行交换
 4 void swap01(int a,int b)
 5 {
 6     int temp = a;
 7     a = b;
 8     b =temp;
 9     cout << "swap01 a=" << a << endl;
10     cout << "swap02 b=" << b << endl;
11  } 
12  
13  void swap02(int *p1,int *p2)
14  {
15       int temp = *p1;
16     *p1 = *p2;
17     *p2 =temp;
18  }
19 int main(){
20     
21     //指针和函数
22     //1.值传递
23     int a =10;
24     int b =20;
25 //    swap01(a,b);
26 //    cout << "a=" << a << endl;
27 //    cout << "b=" << b << endl;
28 
29     
30     //2.地址传递 
31     //如果是地址传递,可以修饰实参 
32     swap02(&a,&b);
33     cout << "a=" << a << endl;
34     cout << "b=" << b << endl;
35     system("pause");
36     
37     return 0;
38 } 
指针与函数(地址传递)
 1 #include<iostream>
 2 using namespace std;
 3 //冒泡排序 参数2 数组的首地址,参数2 数组长度 
 4 void bubbleSort(int *arr,int len)
 5 {
 6     for(int i = 0;i<len - 1;i++)
 7     {
 8         for(int j = 0;j<len - i -1;j++)
 9         {
10             //如果j>j+1的值 交换数字
11             if(arr[j]>arr[j+1])
12             {
13                 int temp = arr[j];
14                 arr[j] = arr[j+1];
15                 arr[j+1] = temp;
16             }
17         }
18     }
19 } 
20 void printArray(int *arr,int len)
21 {
22     for(int i=0;i<len;i++)
23     {
24         cout << arr[i] << endl;
25     }
26 }
27 
28 int main(){
29     
30     //1.创建一个数组
31     int arr[10]={5,4,2,6,9,8,7,1,3,12} ;
32     
33     // 数组长度
34     int len = sizeof(arr)/sizeof(arr[0]); 
35     
36     //2.创建函数,实现冒泡排序
37     bubbleSort(arr,len);
38     
39     //3.打印排序后的数组 
40     printArray(arr,len);
41     
42     system("pause");
43     
44     return 0;
45 } 
使用指针、函数、数组完成冒泡排序

 

posted @ 2021-02-06 17:31  stratus  阅读(67)  评论(0)    收藏  举报