三九宝宝网宝宝教育教学论文

C语言数组与指针的问题

03月12日 编辑 39baobao.com

[C语言数组指针]#include #define STU 3 #define GRA 4 void search(float gra[][GRA],int stu); void print(float gra[][GRA],int i); int main(void) { float gra[STU][GRA] = {0}; int...+阅读

我先回答的你第一个问题,首先,for循环的作用是为将字符串ch的两个字串的地址赋给指针数组p[i],

ch[i]代表的是数组名常指针可以直接给指针赋值,所以p[1]=ch[1],就是使p[1]指向字串"6937"的首地址,p[2]=ch[2]就是将字串"8254"的首地址赋给p[2],

至于p[i]的值,实质就是p[1],p[2]的值,楼上说的依次为6 8 0,是错的,他存储的是地址,具体的地址值在不同的编译器和不同的电脑上显示不用的,我的打印出来分别是p[1]=1245044,p[2]=1245049.

然后就是你补充的问题,至于你问的p=a[0]和p=&a[0][0]都是没有区别的,就是将第0行的第一列元素的地址赋给p.

第二个既然p=a[0]那么他就是代表p指向第0行的第一列元素那么(p+1)不是指向第一行第二列元素的地址吗?就是第二个元素的地址啊啊,所以*(p+1)输出的应该是3.另外至于你所说的指向下一行是相对于数组名常指针a来说的,a+1才代表下一行。

c语言问题指针和数组

这是由于函数参数及运算符的计算顺序导致的,后置++运算符优先级大于*运算符,则表示此后置++运算是优先于*进行计算的,而后置++运算符是先使用待自增变更的值,再做自增1运算,同时,由于标准C参数压栈次序是反向压栈,也就是从右到左。因为C要把不定参数...放在最右边,为了高效率定位参数,所以只能从右到左压栈,这样第一个参数最靠近栈顶。比如printf (const char * szFormat,...);如果从左到右压不容易找到第一个参数szFormat(不过16位操作系统的时候,调用API函数时,微软的vc曾经支持过一种从左到右的压占次序,现在32位系统没有了)。 则根据以上信息,可以确定其程序的输出为11和9(先运算*p++,传递的参数值为*(a+3),此时p指向a+4,其值为11).

C语言指针与数组

比如p指向的是数组第一个元素的地址 所以*p就是取p指向的这个地址的值.B错在str是指向字符串的指针比如printf("%s\n",str);会输出整个Program由此可以说明BCD都是错的字符串的表现形式在C程序中,可以用两种方法实现一个字符串。1. 用字符数组实现。[例8.11]void main(void){static char string [ ]="I Love China!";printf("%s\n",string);}运行时输出: I Love China!和前面说明的数组属性一样,string是数组名,它代表字符数组的首地址,(见图8.17)。string[4]代表数组中序号为4的元素(v),实际上string[4]就是*(string+4),string+4是指向字符“v”指针。2. 用字符指针实现。可以不定义字符数组,而定义一个字符指针。用字符指针指向字符串中的字符。[例8.12]void main(void){char *string="I Love China!";printf("%s\n",string);}在这里没有定义字符数组,但C语言对字符串常量是按字符数组处理的,实际上在内存开辟了一个字符数组用来存放字符串数组。

在程序中定义了一个字符指针变量string。并把字符串首地址(即存放字符串的字符数组的首地址)赋给它(见图8.18)。有人认为string是一个字符串变量,以为定义时把"I Love China!"赋给该字符串变量,这是不确切的。...

以下为关联文档:

c语言指针数组char *name[4];是一个指针数组,每个成员name[i]都是一个字符指针。 printf函数打印字符串时传的参数就是一个字符指针。 所有printf("%s", name[4]); --针对你的问题 printf(“%...

C语言函数数组指针利用指针求一维数组的数据元素之和#include<stdio.h> int main() { int array[10]; int i, *p; for(p=array, i=0; i<10; i++) scanf("%d", p+i); for(p=array, i=0; i<10; i++) printf("%d ", *(p+i)); return 0...

C语言数组与指针函数结合实验#include"stdio.h" bool fun_1(char ch[]) { char *p1=ch,*p2=ch; while(*p2){p2++;} p2--; while(p1<p2) { if(*p1!=*p2)return 0; p1++; p2--; } return 1; } int fun_2(int...

c语言中的指针数组这里的a是二维数组名,如a[2][3] 那么a[0]就是一维数组a[0]的0号元素的首地址. 对二维数组来说,a[0]表示的是地址. 同理,a[1]也是表示地址. 如果一维数组的话a[2],那么a[0]就是值...

一个C语言中指针型字符数组的问题<p>char *p=“AAA”; //初始化一个指向字符串的指针(指向字符串其实是指向字符串的第一个字符)</p> <p> </p> <p&gt;注意,上面说的是指向字符串常量!</p> <p> </p> <p>p[0]='B'; //...

c语言中的指针数组问题*p+i,是先执行*p,然后再加i 如int a[2]={1,2}; int *p; p=a;//p指向数组a,即指向数组a的第一个元素,即1 那么*p=1;*p+1=1+1=2;*p+3=1+3=4; *p[i],p[i]本身就是一个指针,*p[i]取p[...

C语言的指针数组# includevoid main() { void exchange(char *name[],int n); char * name[]={"January","February","March","April","May","June","July","August","September","October","November","December"};...

c语言问题指针数组c语言问题指针数组,C语言用指针数组和:这是由于函数参数及运算符的计算顺序导致的,后置++运算符优先级大于*运算符,则表示此后置++运算是优先于*进行计算的,而后置++运算符是...

c语言数组指针的区别c语言数组指针的区别,C中数组指针的异同:int(*p)[4],这个就是行指针 这种类型的指针p是指向一个一维数组,这个一维数组包含4个整形元素 但是 int a[4];p=a; 这种方式却是不对...

推荐阅读
图文推荐