在将函数指针传递给数组之后从int数组中获取值的问题

时间:2015-05-22 16:34:27

标签: c

我试图从类型class func addLinkAttribute(pattern: String, toText text: String, withAttributeName attributeName : String, toAttributedString attributedString :NSMutableAttributedString, withLinkAttributes linkAttributes: [NSObject : AnyObject]) { var error: NSError? if let regex = NSRegularExpression(pattern: pattern, options:.CaseInsensitive, error: &error) { regex.enumerateMatchesInString(text, options: .allZeros, range: NSMakeRange(0, count(text.utf16))) { result, _, _ in let nsRange = result.range if let strRange = text.rangeFromNSRange(nsRange) { let foundText = text.substringWithRange(strRange) var linkAttributesWithName = linkAttributes linkAttributesWithName[attributeName] = foundText attributedString.addAttributes(linkAttributesWithName, range: nsRange) } } } } 的数组中获取值,但我无法弄清楚我做错了什么。 该函数获取两个指针,一个指向数组,另一个指向另一个int变量,我希望函数使用数组中的值更改此其他var(" balance"是var的名称)。该函数如下所示:

int

主要功能看起来像这样:

int Buy(int *balance, int *prices){
    int item=0;
    printf("\nPlease enter product number to commit purchase: ");
    scanf("%d", &item);
    *balance -= *(prices+item);
    return 1;
}

底线,我需要void main( int argc, char *argv[]){ int *ptr_to_prices, *ptr_to_balance; int balance = atoi(argv[2]); ptr_to_balance = &balance; Init(argv[1], balance); ptr_to_prices = displayProducts(atoi(argv[2])); Buy(ptr_to_balance, ptr_to_prices); } 函数来获取我初始化程序的余额值,并从中减去Buy的值。

感谢

更新: 这是displayProducts():

prices[item]

1 个答案:

答案 0 :(得分:3)

我想,你需要改变

printf("%d\n", prices+item);

printf("%d\n", *(prices+item) );

因为%d需要int参数。要打印指针,您需要使用%p

也就是说,如果没有正确提供命令行参数,直接使用argv[n]而不检查argc会导致导致分段错误的不稳定行为。

修改

问题在于,您从prices返回自动局部变量(数组)displayProducts()的地址。使用返回值将导致undefined behaviour