数组指针C语言的问题,这道题的cd选项等效成什么?
a是一个数组,那么变量a本身,就是一个不可改变地址的指针。你说的没错,a就是首元素地址。
那么注意,第一个for循环虽然是空语句,但将p进行了++操作,完成后,是将p指向了a数组的末端后一位(结束标记位'\0')。
第二个for,p1从数组末端开始,每次减一,一直到p1>=a,也就是数组的首端,而p每次加1,实际是扩展了数组的长度,将第4/5/6位分别赋值为3/2/1位,结果是D。
你提供的代码从语法上看没有问题,最好把全部代码展示出来,或将错误信息提供一下,可以私信我
知识点:(1) int (*cp)[5], 这里有小括号,所以 cp 是1个指针,(又叫行指针),注意,是一个指针,后面[5]表示这个指针用于指向有5列的2维数组。 cp=c; 说明,c 是2维数组,它每行有5列元素,现在让cp指向了第一行。 cp=&c[0][0]; 若 cp+j 则指向 第 j 行。
(2) C语言中,方括号实际上也是运算符,记住衡等式 a[i] == *(a+i),用它,可以变换[] 与 *。 这里 *号 是求值。
好了。假定, int c[4][5]={0,1,2,3,4,10,11,12,13,14,
20,21,22,23,24,30,31,32,33,34},(*cp)[5]; cp=c;
变换 9.12 的 c,d:
*(cp+1)+3 = (c[1])+3= &c[1][3]; 是地址。 *(*(cp+1)+3) 是 c[1][3] 的值。
*(*cp+2)= *(*(cp+0)+2)=*(c[0]+2)=c[0][2]; 是元素c[0][2]的值。
我们来输出:
printf ("%d -- %d\n",*(*(cp+1)+3), c[1][3]);
printf ("%d -- %d\n",*(*cp+2),c[0][2]);
输出:
13 -- 13
2 -- 2
c语言问题,关于指针的问题
显然p是一个指针变量。while()循环括号里的返回值,为0或NULL时,while循环直接结束。一、比如我们定义一个int型指针变量。int *p=NULL;初值为空。那么当执行while(p);时,只有p==NULL时,while循环才会结束。所以如果我们写while(p);printf。。。;那么只有当p为空时,后面的printf才会执行...
关于C语言指针的问题
第一种是定义字符数组指针,指向字符数组中的元素,也就是字符串,第二种是指向字符指针的指针,里面应该存放地址,而不是字符串。
C语言中的指针问题到底是怎么回事~
(3)int **ptr; \/\/指针所指向的的类型是 int * (4)int (*ptr)[3]; \/\/指针所指向的的类型是 int()[3] (5)int *(*ptr)[4]; \/\/指针所指向的的类型是 int *()[4] 在指针的算术运算中,指针所指向的类型有很大的作用。 指针的类型(即指针本身的类型)和指针所指向的类型是两个概念。当你对C...
关于C语言指针的问题
书上和很多专业人士都说,指针是C语言的主要特点,没掌握指针就没有入门。但我看那些C语言方面的程序题目,用到指针的地方并不多,我也知道指针就是地址,但不知道具体用法,请问,指... 书上和很多专业人士都说,指针是C语言的主要特点,没掌握指针就没有入门。但我看那些C语言方面的程序题目,用到指针的地方并不多...
C语言指针有关问题?
需要注意的是,定义时的int *t中的t代表一个内存地址,这个地址指向的是一个整型数据。若有int *t=5 , t表示内存中指向一个整型数据的地址,此时才能单独用*t,就是表示取出t这个地址中所表示的数,那么就是5。
几道C语言指针方面的问题
3.D,printf("%d\\n",*b);输入的值,printf("%d\\n",b);输出的是地址。4.scanf('%d,pa); 其中pa是个地址,格式要求就得是地址,也可以表示为scanf('%d,&a);5.C 是对的,原因是*p=*q,表示的是*p=j。此时i的值也改变了,等于j;6.选项A,既然指针变量已经为NULL,怎么还可输入呢...
C语言指针问题
1、ptr赋值为arr地址后指向第一个元素,即元素6.2、*(ptr++) += 123;由于是右侧操作(递增后缀),所以先取ptr地址后再递增ptr,此时取得的地址还是第一个元素地址(递增后ptr指向第二个元素,也就是7,这是第一次递增),因此是对6+123=129,并保存原地址,即第一个元素地址,因此6被改为129...
C语言数组指针?
指针类型不一样。p要是++就一口气蹦过5个,p2要是++就一口气蹦过10个……类型很重要。类型很重要。类型很重要。
C语言的数组和指针问题,谢谢高手的解答!
所以B是一个2级常指针,同样指向二维数组的第一个元素B[0],而B[0]是一个一维数组。总结,问题的关键在于,数组名相当于一个指向于这个数组第一个元素的指针。3)所以,int A[2][3][4]={0};A是一个三维数组,其中A[0]和A[1]都是它的元素,A[0]是第一个元素。所以, A是一个三级...
C语言指针问题
1.概念问题:指针是指存放地址值的变量或常量;指针与一般变量或常量的区别,在于它不直接存储数值,而是存放被存储数值的地址,属于间接存放,所以不少初学者感觉学习困难。比如:int a=2,b,c,*ptr; ptr=&a;表示将指针ptr指向变量a,存放a的地址,假设是2000H,而指针变量ptr本身也要有地址,假...
貂音复方: char *a={"abc"}; a 是指针.char c[]={"abc"}; c 是数组.初始化后 sizeof(a) 为 4,strlen(a) 为3.同样,sizeof(c) 为 4,strlen(c) 为3.在语句中有时一样,有时不一样.例如:char *a={"abc"}; char c[]={"abc"}; char b[]={"123"}; int L; L = ...
明水县14765151139: c语言指针指向数组的问题. - ?
貂音复方: 首先你要明白一点,数组名和指针本质上是一回事,都是地址,该数组的首地址.知道这一点后就可以活学活用了.这是c语言的精髓.比如你定义了int *p,a[10];并且让p=a;, 这个操作叫做指针p指向了数组a,其本质是给p这个变量付了一个...
明水县14765151139: C语言指向二维数组指针问题 - ?
貂音复方: #include#define LENGTH 5 void main() {int i=0, j=0; int iArray[LENGTH][LENGTH]; int (*pArray)[LENGTH]; for (i=0; i { for (j=0; j { iArray[i][j] = i*LENGTH+j; printf("%d\t", i*LENGTH+j); } printf("\n"); } printf("\nUse pArray\n\n"); pArray = iArray; ...
明水县14765151139: C语言数组指针的问题 - ?
貂音复方: 1234567 intmain() { chara[5]={'A','B','C','D'}; char(*p3)[5] = &a; char(*p4)[5] = a; return0; } 个人感觉 char (*p4)[5] = a;这一句应该会出现语法错误,char (*p3)[5] = &a;这一句表示p3是一个一维五个字符的数组的地址,所以p3的值是数组a[5]的起始地址,p3+1应该是首地址加5;后面的修改代码应该都是不合法的,用VC6编译应该会出错(以前我刚学的时候试过)
明水县14765151139: C语言数组指针问题! - ?
貂音复方: 请注意定义: void sort(char *str[],int n)str 是指针数组,不是数组,所以,str[i] 里面的每一个都是地址. 如果这样: void sort(char str[],int n) str[i] 就是值了.就是你说的那样了.
明水县14765151139: C语言数组与指针问题,很简单!!! - ?
貂音复方: 简单地说,int *p[10];就是一个二维数组确定了行数(10行),具体每一行有几个元素,可以在程序中动态指定(就像下面的程序使用p[1]=malloc(sizeof(int)*15);将p[1]这一行指定为有15个元素);可以动态建立不规则数组 int (*s)[10];就是一...
明水县14765151139: C程序指针数组问题 - ?
貂音复方: 把你的问题具体点说:char* p[2 ]和char (*p)[2 ] 无非是指针数组和数组指针的理解:1、先看char* p[ 2] 由于*是自右向左结合的,所以首先它是一个数组,然后是char*类型的,所以char* p[ ]是一个存放指针类型的数组(即:存放char类型变量的地...
明水县14765151139: C语言,指针与数组的问题(subscript requires array or pointer type) - ?
貂音复方: s表示a的首地址,*s表示a[0].所以你这个就相当于printf("%d",(a[0])[3] );
明水县14765151139: C语言关于数组指针的问题 - ?
貂音复方: 简单的说吧,就是参数*p指向的内容就是你带入的参数,这个算第一指向.但是在函数里,你有运行了p=b,也就是p重新指向了数组b的首地址,所以,赋值也就是给数组b进行赋值,跟a没有关系了.也就是说,你带入的地址a的首地址无效了.如果取消p=b,那么结果就是abcde了.
明水县14765151139: 一个简单的C语言问题 指向结构体数组的指针 - ?
貂音复方: 类型不同 struct student 是一个类型 char数组 是一个类型 p是指向类型struct student的指针 stu[1].name是真相char[]的指针.c++是强类型语言,类型必须对应 你可以通过强制类型转换来实现 p = (struct student *) stu[1].name ,但是根据本题目情况,这样产生的结果是错误的