我试图从类型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]
答案 0 :(得分:3)
我想,你需要改变
printf("%d\n", prices+item);
到
printf("%d\n", *(prices+item) );
因为%d
需要int
参数。要打印指针,您需要使用%p
。
也就是说,如果没有正确提供命令行参数,直接使用argv[n]
而不检查argc
会导致导致分段错误的不稳定行为。
修改强>
问题在于,您从prices
返回自动局部变量(数组)displayProducts()
的地址。使用返回值将导致undefined behaviour。