Ps:相信学过C语言的同学都知道,指针是C语言中最重要也是最难攻克的部分,下面的代码中的注释部分请同学们要仔细阅读
一、指针&指针变量#include五、指针练习#include #include #include //32位编译器(0x0000 0000-0xffff ffff): //指针变量: //存放指针(地址)的变量 //因为地址编号(0x0000 0000)如此,所以我们指针变量占4个字节就可以存下 //64位编译器(0x0000 0000 0000 0000-0xffff ffff ffff ffff): //指针变量占8个字节 //指针变量的定义和初始化 //指针变量的定义: int main01() { using namespace std; int a = 10; 定义指针的步骤: 1.*与符号结合代表是一个指针变量 2.要保存谁的地址,将他的定义形式放在此处 3.用*p替换掉定义的变量 定义指针变量的格式: 数据类型 * 变量名 !!注意!!指针变量的类型是 数据类型*(例:int *p的指针变量类型是int*,p是变量!!) int* p; 分析 与*结合代表这是一个指针变量 p是变量,p的类型是将变量p本身拖黑,剩下的类型就是指针变量的类型 指针变量p用来保存什么类型数据的地址,将指针变量p和指针变量p最近的*一起拖黑, //剩下什么类型就保存什么类型数据的地址 p = &a; int* i_porint = &a; system("pause"); return (0); } //指针的使用 //指针变量保存了谁的地址就指向了谁 int main02() { //在使用(最常见是赋值时,因为等号两边数据类型要匹配)时,对一个表达式取*,就会对表达式减一级*,如果对表达式取&,就会加一级* using namespace std; int a = 10; int* p = &a; *p = 100;//在使用时,*与p结合代表,取p指针所指向的那块空间的内容 cout << *p << endl;/ system("pause"); return (0); } int main09() { using namespace std; const int* p;//const在这里修饰的是* int a = 10; p = &a;//不能通过*p,改p所指向空间的内容 / //char* arr[3] = { "heihei","haha","xixi" };//把三个字符串常量的首地址存在数组里面 for (int i = 0; i < 3; i++) { cout << arr[i] << endl;//输出了三个字符串常量 } cout << *arr[0] << endl;//输出结果为h; cout << *(arr[1] + 1) << endl;//输出结果为a system("pause"); return 0; } //字符指针数组作为main函数参数 //.exe //在没有给文件命令参数时,argc中保存的是1 argv中保存的是。exe文件的路径 //点击项目名称,右击选择属性-->调试-->命令参数处可以为main函数传参,各个参数的首地址存放在argv数组中 //char* argv[] = {".*.exe","hello","123456"}; //argc是执行可执行程序的参数个数 //argv是一个字符指针数组,保存的是参数(字符串)的首元素地址 int main(int argc, char* argv[]) { cout << argc << endl; cout << argv[0] << endl; cout << argv[1] << endl; cout << argv[2] << endl; cout << argv[3] << endl; system("pause"); return 0; }
#include#include #include #include using namespace std; //1.找出数组中第二大的数,(使用*操作数组元素个数,不要使用[]) int main03() { int a[] = { 100,100,100,234,123,500,32,68,41,99,13,71 }; int* p = a; int* q = (int*)(&a + 1) - 1; int temp = 0; for (int i = 0; i < (q - p); i++) { for (int j = 0; j < (q - p) - i ; j++) { if (*(p + j) > *(p + j + 1)) { temp = *(p + j); *(p + j) = *(p + j + 1); *(p + j + 1) = temp; } } } cout << *(q-1) << endl; cout << q-p << endl; system("pause"); return 0; } //不使用库函数,实现字符串拷贝功能 //char src[100] = "hello"; //char dst[100]; //把src的内容拷贝给dst //函数名:void my_strcpy(char dst[],char src[]); int main04() { char src[100] = "hello"; char dst[100] = {0}; char* p = src; char* q = dst; int i = 0; for (i = 0; *(p + i) != ' '; i++) { *(q + i) = *(p + i); //dst[i] = src[i]; //q[i] = p[i]; //*(dst+i) = *(src+i); //四者等价 } *(q + i + 1) = ' ';//补结束符 cout << "src= " << src << endl; cout << "dst= " << dst << endl; system("pause"); return 0; }



