在C语言中,数组名代表数组中首元素的地址,所以,下面两句获取数组的首地址是等价的: #include<stdio.h> int main() { int a[5]={1,2,3,4,5}; int *p=&a[0]; int *p2=a; printf("地址p=%p\n",p); printf("地址p2=%p",p2); return 0; } 输出结果: 地址p=000000000061FDF0地址p2=000000000061FDF0 根…
二维数组的每个元素都是一个一维数组,例如int arr[2][3]={{1,2,3},{4,5,6}}; 下面通过几个例子来对二维数组进行深入了解:二维数组可以看作是一个父数组,他的每个元素都是一个一维的子数组. (1)数组名表示数组首元素的地址,那么arr表示的是谁的地址?arr表示的是ar首元素的地址,也就是arr[0]的地址,同样arr[0],arr[1]也是两个子元素一维数组的数组名,可以分别用数组名a,b来代替,那么arr[0][0]表示a[0],ar[1][0]表示b[0],所以a(…
二维数组a的有关指针: 表示形式                                含义                                                                           地址 a                                            二维数组名,指向一维数组a[0],即0行首地址             2000 a[0] ,*(a+0),*a                    …
指针数组:一个数组,若其元素均为指针类型的数据,称为指针数组,指针数组存放的是指针类型的数据,也就是指针数组的每个元素都存放一个地址.下面定义一个指针数组: int * p[4];//[]的优先级是比*高的,所以p先和[]结合,p[4]明显是一个数组,表示p数组有四个元素,int *表示每一个数组元素是指针类型的,可指向一个整型变量. 注意不用写成:int (*p)[4];  //这是指向一维数组的指针变量,数组的每个元素存放着一个指向整型一维数组的指针. 而数组指针,它指向的是一个数组. #i…
二级指针:可以理解为指向指针的指针,存放的是指针变量的地址. 下面用一级指针来保存一个指针变量的地址: #include<stdio.h> int main() { int *p1; int *p2; int data; p1=&data; p2=&p1; printf("p1保存的地址=%p\n",&data); printf("data=%d\n",*p1); printf("p2的地址=%p\n",&am…
指针是存放变量的地址,那为什么要区分类型?不能所有类型的变量都用一个类型吗?下面用一个例子来说明这个问题. #include<stdio.h> int main() { int a=0x1234; int *p=&a; char *c=&a; printf("p指向的变量a的地址=%p\n",p);//打印指针p指向的变量的16进制的地址 printf("c指向的变量a的地址=%p\n",c);//打印指针c指向的变量的16进制的地址 p…
(首先,关于Honor Code,我咨询过了Help Center,分享课后练习的思考题的想法是可以的(注意不是代码),但要标明引用,引用格式来源于https://guides.lib.monash.edu/citing-referencing/apa-university-course-materials.) 北京大学(Producer). (2019) . 计算导论与C语言基础[Coursera] . Retrieved from https://www.coursera.org/learn…
字符串指针和字符串数组使用区别 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 5 int main(void) 6 { 7 char str1[]="this is str1!"; 8 puts(str1); 9 10 strcpy(str1,"new str1"); 11 puts(str1); 12 13 char *subStr=str1…
定义一个数组指针,指向二维数组: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int (*p)[4];//定义二维指针数组 p=a;//指向二维数组,数组指针等同于二维数组名 #include<stdio.h> int main() { int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int (*p)[4];//定义二维指针数组 p=a;//指向二维数组 for(int i=0;i<3;i…
#include<stdio.h> #include<string.h> struct Student { char name[32]; int age; int height; int weight; }; int main() { struct Student Stus[3]={ {"hhh",12,45,45}, {"ttt",16,24,45}, {"kkk",18,23,45}, }; printf("…