C语言中几个关于初值的问题

在程序中常常需要对变量赋初值,以便使用变量。语言程序中可有多种方法,在定义时赋以初值的方法,这种方法称为初始化。在变量说明中赋初值的一般形式为:

类型说明符 变量1= 1,变量2= 2,……; 例如:

int a=0b,4c=5;

float x=3.2,y=3f,z=0.75;

char ch1='K',ch2='P';

  在说明中不允许连续赋值,如a=b=c=5是不合法的。

C语言中有4种运算符,分别是算术运算符(+,-,*,/,等)、关系运算符(>,<,>=,<=,!=,==)、逻辑运算符(&&,||,!)以及赋值运算符。最基本的赋值运算符是=,赋值表达式的一般形式为:

<变量><赋值运算符><表达式>

而几种运算符间的优先次序是:算术运算符----》关系运算符----》赋值运算符,例如:

x=y<=z   等价于    x=(y<=z)

除了在定义变量时给他赋初值,经常也在循环结构中赋值来控制循环的次数和状态,比如for(i=0;i<10;i++)。在下次用到i的时候i的值就是10,如果要继续使用还要根据需要再赋一次值。在用循环语句计算1-100的累加和时通常要定义一个变量s作最终输出的数,在循环语句里通常这么写:s+=i;表示以s加上当时的i赋给s,但这时必须要在循环前给s赋初值,否则系统会给s赋一个随机的值,可能是0,可能是其他值,直到程序给它赋了一个具体的值。因此,不提倡定义变量时不初始化值。

然后是关于指针的初始化,使用指针变量应该注意几个问题:

(1)、不要使用没有赋值的指针变量,使用指针变量前一定要对他正确赋值。

(2)、使用指针变量访问数组元素时,要随时检查指针的变化范围和指针变量的当前值,始终不能超过数组的上下界。例如:

main()

{

int a[10],*p=a,j;

for(j=0;j<10;j++)

scanf("%d",p++);

for(j=o;j<10;j++)

printf("%d ",*p++);

printf("\n");

}

结果为:


这个程序第一个for语句循环结束时,p已经指向a[10],已经超出了a数组的范围,再执行第二个for循环,p指向的都不是a数组的元素范围,因此,输出的数据不是我们输入的数据。想要程序能正确输出我们输入的数据,应该在第二个循环前使p指针再次指向a数组的起始位置。应该改为:

int main()
{
int a[10],*p=a,j;
for(j=0;j<10;j++)
scanf("%d",p++);
p=a;
for(j=0;j<10;j++)
printf("%3d",*p++);
printf("\n");
return 0;
 } 

正确结果为:


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值