iT邦幫忙

0

C : 指標與陣列的問題

#include <stdio.h> 

void matrixChange(int * , int);

int main(void){
	int as[10] ={0,1,2,3,4,5,6,7,8,9};
	
	matrixChange(as,10);
	return 0;
}

void matrixChange(int *ptr_a , int size){
	int count=0;
	
	while(count<size){
		printf("%#x: %d\n",ptr_a+count,*ptr_a+count);
		count++;
	}
	
	count=0;
	while(count<size){
		*(ptr_a+count) = 10; 
		printf("%#x: %d\n",ptr_a+count,*ptr_a+count);
		count++;
	}
}

https://ithelp.ithome.com.tw/upload/images/20180728/20105034VMPZzGhAbR.png

為什麼我要修改陣列值,但是結果卻是增加數值,不是修改。
請求大家幫忙 @@


1 則留言

2
Kevin
iT邦新手 2 級 ‧ 2018-07-28 10:05:05

*(ptr_a+count) = 10; // 指派10給指標的值
printf("%#x: %d\n",ptr_a+count,*ptr_a+count); // *ptr_a取值(10) + count

如果要修改不同的應該是 *(ptr_a+count) = count + 1 之類的。
如果你要全部顯示10是*(ptr_a+count) 指標要先加上位移再取值,否則他會先取值在+count。

看了您的留言 我明白了,不小心沒有做好抓值的動作@@
謝謝您的留言,話說,我好像發錯地方了,本要做最佳解答的

看了您的留言 我明白了,不小心沒有做好抓值的動作@@
謝謝您的留言,話說,我好像發錯地方了,本要做最佳解答的

我要留言

立即登入留言