A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 林哲生10 中级黑马   /  2016-8-2 16:12  /  1243 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

(1)以下程序会出现什么问题:
#include <stdio.h>
#include <string.h>
int main()
{
    int arr1[4], arr2[5];
    if( strlen(arr1[4]) - strlen(arr2[5]) < 0)
        printf("arr1的元素比arr2的元素少\n");
    else
        printf("arr1的元素比arr2的元素多\n");
    return 0;
}
答案:
#include <stdio.h>
#include <string.h>
int main()
{
    int arr1[4], arr2[5];
    if( (int)strlen(arr1[4]) - (int)strlen(arr2[5]) < 0)
        printf("arr1的元素比arr2的元素少\n");
    else
        printf("arr1的元素比arr2的元素多\n");
    return 0;
}

解析:strlen()函数的返回值是unsigned long类型的,相减无法得到负数.

(2)若有说明: int *p, a = 1, b;以下程序段正确吗?
scanf("%d", &b);
*p = b;
答案:错
解析:p是野指针,不能赋值给一个野指针指向的变量

13 个回复

正序浏览
MARK,学习到了
回复 使用道具 举报
林哲生10 发表于 2016-8-2 21:05
那就不要给野指针赋值啊

p = &b;这样就可以 啊,  我想问谁会给一个野指针赋值呢?肯定要想先初始化啊
回复 使用道具 举报
MARK,学习了.{:3_53:}
回复 使用道具 举报
Chenjunfeng 发表于 2016-8-2 21:27
我看你发帖挺多的,发帖技术分有增吗?

发帖有2分黑马币
回复 使用道具 举报
我看你发帖挺多的,发帖技术分有增吗?
回复 使用道具 举报
林哲生10 发表于 2016-8-2 21:12
没,加下我好友,赚黑马币中

一样,我也在赚黑马币,你准备报哪期的?
回复 使用道具 举报
Chenjunfeng 发表于 2016-8-2 21:08
兄弟你就业班报名了吗?

没,加下我好友,赚黑马币中{:2_30:}
回复 使用道具 举报
给p指向nil,那就不是野指针了
回复 使用道具 举报
兄弟你就业班报名了吗?
回复 使用道具 举报
Chenjunfeng 发表于 2016-8-2 20:56
第一个问题提的比较好,第二个问题,我要是想给p指针赋值,该怎么做呢?

让指针指向你已经申请了的一块内存空间,比如变量
回复 使用道具 举报
anan安 发表于 2016-8-2 16:51
不能给野指针赋值要怎么破?

那就不要给野指针赋值啊{:2_31:}
回复 使用道具 举报
第一个问题提的比较好,第二个问题,我要是想给p指针赋值,该怎么做呢?
回复 使用道具 举报
不能给野指针赋值要怎么破?


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马