c语言问题 char str[20]="Program",*p;p=str;
char
str[20]="Program",实际上是申请了20个char的空间并将str指向这组空间的首地址,p=str;就是令p也指向这组空间的首地址,
所以*P和str[0]都表示第一个元素
‘P',str[0]就是首元素啊,不是首地址
B中,二者类型不同。
str是数组,类型是char [20]
p是指针,类型是char *。
最大的区别就是p可以被赋值,可以自加自减。而str值不可更改。
另外,sizeof str的结果是20, 而sizeof p结果为系统位数,比如32位下该值为4, 64位下该值为8.
str[0]是首元素,str是数组首地址,p=str是将指针p指向数组首地址,*p取的是数组的第一个元素“P”,当然就跟str[0]相等了。如果写成*p=str,如你所想,这时候p存放的就是数组的首地址了。
为什么其中*p 与str[0]的值是相等的啊?答: str[0]表示 串的第一个字符,p是首地址,*p就是首字符
str[0]与*p一样的。
指针变量p存放的是不是数组的首地址? 答:p=str就是将数组的地址送入p,所以 “是”
还有为什么str[0]是首地址,我认为str[0]是首元素啊。 答:这里str[0]是首字符,不是首地址。
str[0]首元素没错
p是首地址。
而*p是首地址指向的值,也就是首元素。
是首地址 str[]是一组单元格 str[0]的确是首元素 但就指针作用而言它就是指首地址
c语言问题 char str[20]="Program",*p;p=str;
char str[20]="Program",实际上是申请了20个char的空间并将str指向这组空间的首地址,p=str;就是令p也指向这组空间的首地址, 所以*P和str[0]都表示第一个元素 ‘P',str[0]就是首元素啊,不是首地址
C语言语法错误提问
char obj[20];说明str obj是地址常量(str是str[0]的地址 obj是obj[0]的地址)常量不能自加,自减 include <stdio.h> void copy(char* s, char* t){ while (*s++ = *t++);} int main(){int i=0;char str[20];char obj[20];scanf("%s",str);\/\/copy(obj,str);while (*(...
char str[20]是什么意思,20是代表什么是20?
char str[20]指定义 一个长度为20的字符串,20就是指str的长度!
编写一个c语言程序,输入字符串1和字符串2,如果字符串1包含字符串2,则...
='\\0'&&ch[i]!='\\0';i++) if(str[i]==ch[i])j++;\/\/我想让字符串1与字符串2作比较,然后相同时j就+1,这里貌似j从来不加.返回值永远都是0 if(j>=1)return 1; if(j<=0)return 0;}int main(){ char str[20],ch[20];int s; printf("enter a string :"); cin...
一道C语言
答案C char str[][20]={"Hello","Beijing"} 这表示str是个二维数组,由两个一维数组构成,每个一维数组是20个字节构成。p=str 这表示p是指针,指向二维数组str的首地址 p+20 这表示由p指向的地址向后偏移20个字节,刚好指向了第二个一维数组“Beijing”了 strlen()它是字符数组长函数,对“...
设有以下定义和语句char str[20]='Program',*p;p=str;则以下叙述中正确...
【答案】:A (47)A) 解析 : str[0] 、 *p 都指向字符串的首地址 。 选项 B) 不能说 str 和 p 完全相同 ,p 是指针 , 而str 是数组。选项 C) 中 str 数组的长度是 20, 而 p 的长度是字符串的长度。选项 D) 中 ,str 中存放的内容是字符串 , 而 p 存放的内容是地址。
C语言。有以下定义和语句 char str[20]=”Program”,*p; p=str...
B中,二者类型不同。str是数组,类型是char [20]p是指针,类型是char *。最大的区别就是p可以被赋值,可以自加自减。而str值不可更改。另外,sizeof str的结果是20, 而sizeof p结果为系统位数,比如32位下该值为4, 64位下该值为8....
一道C语言选择题:以下正确的程序段是:()
B:p做为一个指针,没有初始化.记住,指针一定要初始化后才能使用!C:str[2]的意思其实是 *(str + 2),所以&str[2]其实就是&*(str + 2),也就是str + 2,还是个地址,所以是正确的.D. char str[20],*p=str; scanf("%s",p[2]);:p[2]代表 *(p+2),代表第三个字符了 ...
C语言中char str[20], *p=str; scanf(“%s”,p[2]);是正确的吗?谢谢
恭喜您,这是正确的。还可以使用以下方法:1.p[2]2.p+2 3.*(p+2)4.&str[2]5.str[2]6.str+2 因为这是字符串数组可以这样写,如果是数字数组,就是:p+2;p[2],&str[2]
c语言程序:将一串字符倒序输出,结果如图,问题在哪?代码在下面_百度知 ...
char str[20];而你从1开始计位,也就是说只能输入20个字符,而且下标21是越界的,str[20]下标范围是0-19 所以这样定义只能输入20个字符 输入n位字符串至少预留n+1位空间,避免代表换行或者结束符下标越界 define _CRT_SECURE_NO_WARNINGS include <stdio.h> include <math.h> include<string.h>...