#include <stdio.h>
int main()
{
char ch1='I',ch2='Q';
int n1=1, n2=6;
double d1=1.25,d2=20.5;
//定义两个指针变量pch_1、pch_2分别指向ch1、ch2
char *pch_1=&ch1;char *pch_2=&ch2;
//定义两个指针变量pn_1、pn_2分别指向n1、n2
int *pn_1=&n1;int *pn_2=&n2;
//定义两个指针变量pd_1、pd_2分别指向d1、d2
double *pd_1=&d1;double *pd_2=&d2;
//分别输出上述ch1、ch2、n1、n2、d1、d2六个变量的地址(即六个指针变量的值)
printf("ch1的值%c,ch2的值%c\n",ch1,ch2);
printf("n1的值%d,n2的值%d\n",n1,n2);
printf("cd1的值%f,d2的值%f\n",d1,d2);
//用间接存取方式输出ch1、ch2、n1、n2、d1、d2六个变量的值
printf("ch1的值%c,ch2的值%c\n",*pch_1,*pch_2);
printf("n1的值%d,n2的值%d\n",*pn_1,*pn_2);
printf("cd1的值%f,d2的值%f\n",*pd_1,*pd_2);
//用间接存取方式修改六个变量的值:char型大写变小写,int型减5,double型加10.0
*pch_1 += 32; *pch_2 += 32;
*pn_1 -= 5; *pn_2 -= 5;
*pd_1 += 10.0; *pd_2 += 10.0;
//再次用间接存取方式输出ch1、ch2、n1、n2、d1、d2六个变量的新值
printf("ch1的地址%c,ch2的值%c\n",*pch_1,*pch_2);
printf("n1的地址%d,n2的值%d\n",*pn_1,*pn_2);
printf("d1的地址%f,d2的值%f\n",*pd_1,*pd_2);
system("pause");
return 0;
}
请问:
//用间接存取方式修改六个变量的值:char型大写变小写,int型减5,double型加10.0
*pch_1 += 32; *pch_2 += 32;
*pn_1 -= 5; *pn_2 -= 5;
*pd_1 += 10.0; *pd_2 += 10.0;这里
为什么不可以用 *pch_1=*pch_1+32;或者 *pch_1=‘*pch_1’+32;或者 *pch_1=”*pch_1“+32;
还有为什么
//定义两个指针变量pd_1、pd_2分别指向d1、d2
double *pd_1=&d1;double *pd_2=&d2;
把double 改成float就输不出来数据呢?
C语言菜鸟求高手解答...
1. 第一个问题似乎是一个关于C语言条件判断的疑问。你需要明确表达你的问题,以便得到具体的解答。2. 在C语言中,`m++` 表示先使用变量 `m` 的值,然后将 `m` 的值加1。所以,表达式 `m++ > 5` 首先将 `m` 的值(初始为5)用于比较,然后 `m` 自增。3. 由于 `m` 的初始值是5,...
c语言求高手解答,让程序要求用户输入一个大写字母,使用嵌套循环产生下 ...
\/\/第一重循环 :控制行的数量 for(;i<=c;i++) { \/\/第二重循环1:控制顺序输出ABC(即前n位字母) for(j=65;j<=i;j++) printf("%c",j); \/\/第二重循环2:控制逆序输出BA(即后n-1位字母) for(j=i-1;j>=65;j--) printf("%c",j)...
c语言求n个数最大值,求高手解答。。。在codeblocks上
=EOF) { int i=n,c=0; int a[i]; for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n;i++) { if(a[i]>a[c]) c=i; } printf("%d\\n",a[c]); } return 0;}
C语言问题,x=3,求x+=x*=x++的值,求高手给解一下,给出解释.谢谢哈!
你可以这样理解:x*=x++;x+=x;得:x++ \/\/ 4->x x*=x \/\/ 4*3->x(12)x+=x \/\/ 12+4->x(16)
一些C语言题目!求高手答疑!谢谢了!!!
int a,b,c;如果这样 c=a,b;,c是a,如果是这样c=(a,b),c就是b 所以(x--,--y)是4 而x++是输出printf后再执行的,所以是2 5,(!x || y--),!x说明第一个是假了,x才是真,所以会判断下一个,y=1,所以或表达式中有一个语句是true,即整个表达式的逻辑值为true,所以你输出的...
C语言的一个问题,求高手解
+ 1 ) = 1; 0000 0001 short类型是两个字节的,你强转成unsigned char *类型,地址加1则,则地址增加1个字节,所以 你打印的结果应该是这两个合起来的就是 0000 0001 0000 0000,结果应该这个256吧,学C语言不要太纠结于类型什么的,你要知道你真正操纵的是地址。
关于C语言求一串阶乘的和,求高手帮我看一下!
逐个处理每个阶乘,从而避免一次性计算导致的溢出问题。这种方法通过迭代方式逐步累加阶乘值,确保每个步骤的计算结果均在可处理范围内。在代码编写过程中,注意检查语法、变量类型以及数学运算的正确性,有助于避免常见的错误。如果有任何疑问或需要进一步的帮助,请随时提问,以便获得针对性的解答。
用C语言求解一元二次方程,菜鸟问题,求高手解答。。。
void main(){float a,b,c,disc,x1,x2,realpart,imagpart;scanf("%f,%f,%f",&a,&b,&c);disc=b*b-4*a*c;if(fabs(disc)<=0.0001) printf("has two equal roots:%8.4f\\n",-b\/(2*a));else if(disc>0.0001){x1=(-b+sqrt(disc))\/(2*a);x2=(-b-sqrt(disc))\/(2*a...
C语言指针问题,求高手解答
char* ss = "0123456789";要求这种字符串的长度是不能用sizeof的,如果用sizeof它计算出来的会是这个指针的长度,在32系统下,指针一般都是4个字节,所以,结果是4。计算字符串的长度,可以使用库函数strlen来计算,它计算出来的长度不包含字符串结束符\\0。有了这个思路,其实你可以自己写一个函数来...
c语言提~~求高手
int a,b,c,i,j,mid,num,t,l;int f[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};\/\/for(i=0;i<15;i++)\/\/ scanf("%d",f[i]);for(i=0;i<14;i++){ for(j=0;j<14-i;j++)if(f[j]<f[j+1]){ t=f[j+1];f[j+1]=f[j];f[j]=t;} } for(i=...